最近弄了一个http项目改造https项目,ssl证书主要利用keytool生成。记录一下keytool命令详解。
-genkey 在用户主目录中创建一个默认文件 “.keystore",还会产生一个mykey的别名,mykey中包含用户的公钥/私钥和证书
(如果没有指定keystroe存储位置,会存在用户默认目录,一般在C盘某个位置,通常操作会指定存储路劲,便于查找)
-alias 别名 缺省值 mykey
-keystore 指定密钥库的名称
-keyalg 指定密钥的算法(RSA DSA,默认采用DSA)
-validity 指定证书的有效期 单位天,默认三个月 90
-keysize 指定密钥长度 缺省值 1024
-storepass 指定密钥库的密码(获取keystore信息所需的密码)
-keypass 指定别名条目的密码(私钥的密码,一般设定与storepass一致)
-dname 指定证书拥有着信息
-list 显示密钥库中的证书信息 例如:keytool -list -v -keystore 指定keysore -storepass密码
-v 显示密钥库中的证书详细信息
- export 将别名指定的证书导出到文件 keytool -export -alias 需要到处的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称,-storepass密码
-file 参数指定导出到文件的文件名和路径
-delete 删除密钥库中某条目 keytool -delete -alias 指定删除的别名 -keystore 指定keystore -storepass 密码
-printcert 查看导出的证书信息 ke'y'tool -printcert -file xxx.crt
-keypasswd 修改密钥库中指定条目密码 ke'y'tool -keypasswd -alias 别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore
-storepasswd 修改keystore密码 keytool -storepasswd -keystore xxx.keystore -storepass 旧密码 -new新密码
-import 将已签名数字证书导入密钥库 keytool -import -alias 别名 -keystore 指定keystore -file 需要导入的证书
另外
1. keystore生成:
a.分阶段生成
keytool -genkey -alias 别名 -keypass 别名密码 -keyalg RSA算法 -keysize 1024(密钥长度) -validity 365(有效期) -keystore d:/xxx.keystore(指定生成证书的位置和证书名称) -storepass 123456(获取keystore信息的密码)
b.一次性生成
keytool -genkey -alias xxxx -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore d:/xxx/xxx.keystore -storepass123456 -dname "CN=(名字,一般是域名),OU=(组织单位名称),O=(组织名称),L=城市,ST=省份,C=国家”中英文都可以
2.查看keystore信息
keytool -list -v -keystore d:/xxx.keystore -storepass 123456
3.证书导出
keytool -export alias xxx -keystore d:/xxx.keystore -file d:/xxxcert.crt -storepass 123456 这种证书是DER编码的
加上-rfc也可以导出PEM格式的证书
keytool -export alias xxx -keystore d:/xxx.keystore -rfc -file d:/xxxcert.crt -storepass 123456
4.查看导出证书信息
keytool -printcert -file d:/xxxxcert.crt
5.证书的导入
keytool -import -alias (指定导入证书的别名,如果不指定默认mykey,别名不唯一会出错),-file d:/xxx.crt -keystore e:/xxx.keystore -storepass 123456
另外 jdk证书库导入信任的证书有时会用到
keytool -import -v -trustcacerts -alias ssss -file d:/xxx.crt -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit(默认密码)
6.证书条目的删除
keytool -delete -alias xxxx -keystore d:/xxx.keystore -storepass 123456
7.证书条目口令修改
keytool -keypasswd -alias xxx -keypass 原密码 -new 新密码 -keystore d:/xxx.keystore -storepass 123456
8.修改keystore密码
keytool -storepasswd -keystore d:/xxx.keystore -storepass 123456 -new 新密码
9.修改keystore别名信息
keytool -selfcert -alias -keypass 123456 -keystore d:/xxx.keystore -storepass 123456 -dname "cn=xxx,ou=,o=,c=..."