使用 JDK自带工具 keytool生成数字证书
生成密钥文件 test.keystore
- ./keytool -genkeypair -v -alias test -dname “CN=test,OU=Wenyao,O=RnD,L=Yangpu,ST=Shanghai,C=China” -keyalg RSA -keysize 2048 -keypass 123456 -keystore d:/test.keystore -storepass 123456 -validity 99999 -storetype JCEKS
> 正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 99,999 天): CN=test, OU=Wenyao, O=R&D, L=Yangpu, ST=Shanghai, C=China
> [正在存储d:/test.keystore]
从文件 test.keystore导出证书 >> test.crt
- ./keytool -exportcert -alias test -file D:/test.cer -keystore d:/test.keystore -storepass 123456 -rfc -storetype JCEKS
> 存储在文件 < D:/test.cer> 中的证书
查看 test.keystore密钥库中的证书信息
- ./keytool -list -keystore d:/test.keystore -storepass 123456 -storetype JCEKS
> 密钥库类型: JCEKS
> 密钥库提供方: SunJCE
> 您的密钥库包含 1 个条目
> test, 2019-11-3, PrivateKeyEntry,
> 证书指纹 (SHA1): B9:A4:EB:86:8D:1F:32:BF:D5:A0:4B:BA:9D:45:45:93:FA:B6:12:93
查看导出的证书信息
- ./keytool -printcert -file D:/test.cer
> 所有者: CN=test, OU=Wenyao, O=RnD, L=Yangpu, ST=Shanghai, C=China
> 发布者: CN=test, OU=Wenyao, O=RnD, L=Yangpu, ST=Shanghai, C=China
> 序列号: 55df5aa1
> 有效期开始日期: Sun Nov 03 18:52:56 CST 2019, 截止日期: Thu Aug 17 18:52:56 CST 2293
> 证书指纹:
MD5: 98:2A:80:BB:0D:44:C6:DF:97:49:F4:4E:C2:77:4C:48
SHA1: B9:A4:EB:86:8D:1F:32:BF:D5:A0:4B:BA:9D:45:45:93:FA:B6:12:93
SHA256: 55:69:5E:42:45:C7:C4:A1:C1:DB:48:63:DC:F9:41:28:F9:7C:FA:86:58:3C:43:C2:05:B2:60:CF:B1:B5:AC:68
签名算法名称: SHA256withRSA
版本: 3
> 扩展:
> #1: ObjectId: 2.5.29.14 Criticality=false
> SubjectKeyIdentifier [
KeyIdentifier [
0000: F6 D3 A4 43 B9 38 EA C9 49 66 01 3C 96 DE A5 1E ...C.8..If.<....
0010: 98 84 44 0F ..D.
]
]
常用参数
参数 | 说明 |
---|---|
-genkey | 生成一对非对称密钥, 相同参数 -genkeypair |
-alias | < alias> 设置别名 |
-keyalg | < keyalg> 密钥算法名称, RSA算法,DSA算法 默认 DSA |
- | 参数 -genkey时可选算法 RSA,DSA 默认 DSA |
- | 参数 -genseckey时可选算法 DES,DESede,AES |
-keysize | < keysize> 密钥位大小 |
- | 参数 -genkey -keyalg RSA或 DSA 常用密钥的长度为1024,2048 (64的倍数) |
- | 参数 -genseckey -keyalg DES 常用密钥的长度为56 |
- | 参数 -genseckey -keyalg DESede 常用密钥的长度为112,168 |
- | 参数 -genseckey -keyalg AES 常用密钥的长度为128,192或256 |
-dname | < dname> 唯一判别名 |
- | CN(Common Name名字与姓氏) |
- | OU(Organization Unit组织单位名称) |
- | O(Organization组织名称) |
- | L(Locality城市或区域名称) |
- | ST(State州或省份名称) |
- | C(Country国家名称) |
-validity | < valDays> 有效天数(证书有效期) |
-keypass | < arg> 密钥口令, 密钥口令至少必须为6个字符(密钥的密码) |
-keystore | < keystore> 密钥库名称, 指定生成扩展名为 .keystore的密钥文件 |
-storepass | < arg> 密钥库口令, 密钥库口令至少必须为6个字符(获取keystore信息所需的密码) |
-storetype | < storetype> 密钥库类型, 可选算法 JKS,JCEKS,PKCS12,BKS,UBER 默认 JKS |
-v | 详细输出 |
-list | 显示密钥库中的证书信息 |
-export | 将别名指定的证书导出到文件, 相同参数 -exportcert |
-file | 参数指定导出到文件, 指定证书路径以及名称 C:/test.crt |
-delete | 删除密钥库中某条目 |
-printcert | 查看导出的证书信息 |
-keypasswd | 修改密钥库中指定条目口令 |
-import | 将已签名数字证书导入密钥库, 相同参数 -importcert |
-rfc | 以Base64的编码格式打印证书 |
如果您觉得有帮助,欢迎点赞哦 ~ 谢谢!!