Jar 包签名

给JAR文件数字签名
1、用keytool生成密钥:

keystore的生成:a、分阶段生成:keytool -genkey -alias pf(别名) -keypass pf(别名密码) -keyalg RSA(算法) -keysize 1024(密钥长度) -validity 365(有效期,天单位) -keystore

e:\pf.keystore(指定生成证书的位置和证书名称) -storepass 123456(获取keystore信息的密码);回车输入相关信息即可;

b、一次性生成:keytool -genkey -alias pf -keypass pf -keyalg RSA -keysize 1024 -validity 365 -keystore  e:\pf.keystore -storepass 123456 -dname "CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)";(中英文即可)

例如:keytool -genkey -keystore key.keystore -alias key -validity 365 

 将在当前目录下生成一个key.keystore文件, -alias后接的是别名,-validity后面接的是该证书有效天数,这里365表示1年。(用这个证书签名的程序1年内有效,不加时默认为90天)。

(

备注:keystore的存储位置

在没有制定生成位置的情况下,keystore会存在与用户的系统默认目录, 

如:对于window xp系统,会生成在系统的C:\Documents and Settings\UserName\ 别名“.keystore”

)

 2、用jarsigner来用此密匙为JAR签名:
 jarsigner -keystore key.keystore -storepass 123 -keypass 321 kk.jar key
 这样kk.jar文件就被签名了,打开jar文件中manifest目录下可以看到多了两个文件,*.sf和*.dsa文件
 3、验证jar文件是否已签名
 jarsigner -verbose -verify kk.jar

 

补充:

JDK中keytool常用命令

-genkey      在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书

-alias       产生别名

-keystore    指定密钥库的名称(产生的各类信息将不在.keystore文件中

-keyalg      指定密钥的算法   

-validity    指定创建的证书有效期多少天

-keysize     指定密钥长度

-storepass   指定密钥库的密码

-keypass     指定别名条目的密码

-dname       指定证书拥有者信息 例如: "CN=pfly,OU=atr,O=szu,L=sz,ST=gd,C=cn"

-list        显示密钥库中的证书信息      keytool -list -v -keystore pf -storepass ....

-v           显示密钥库中的证书详细信息

-export      将别名指定的证书导出到文件 keytool -export -alias cpf -file cpf.crt

-file        参数指定导出到文件的文件名

-delete      删除密钥库中某条目          keytool -delete -alias pf -keystore pf

-keypasswd   修改密钥库中指定条目口令    keytool -keypasswd -alias pf -keypass .... -new .... -storepass ... -keystore pf

-import      将已签名数字证书导入密钥库 keytool -import -alias pf -keystore pfly -file pfly.crt

             导入已签名数字证书用keytool -list -v 以后可以明显发现多了认证链长度,并且把整个CA链全部打印出来。

猜你喜欢

转载自yiran2014.iteye.com/blog/2009423