JDK 自带 keytool 生成免费证书
- 1. 生成证书 存到 密钥库
- keytool -genkey
- 示例
- 2. 查看证书
- keytool -list
- 示例
- 1. 详细输出
- 2. 以 RFC 样式输出
- 3. 导出证书
- keytool -exportcert
- 示例
- 4. keytool
- keytool -help
1. 生成证书 存到 密钥库
keytool -genkey
D:\JDK8_64\bin>keytool -genkey -help
keytool -genkeypair [OPTION]...
生成密钥对
选项:
-alias <alias> 要处理的条目的别名
-keyalg <keyalg> 密钥算法名称
-keysize <keysize> 密钥位大小
-sigalg <sigalg> 签名算法名称
-destalias <destalias> 目标别名
-dname <dname> 唯一判别名
-startdate <startdate> 证书有效期开始日期/时间
-ext <value> X.509 扩展
-validity <valDays> 有效天数
-keypass <arg> 密钥口令
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令
使用 "keytool -help" 获取所有可用命令
示例
生成一个别名为jerryKey
的证书,该证书存放在名为D:/jerry.keystore
的密钥库中,若密钥库不存在则创建。
keytool -genkey jerryKey -keyalg RSA -keysize 1024 -dname "CN=www.jerryjin.com, OU=单位名称, O=久耐科技, L=湘西, ST=湖南, C=CN" -validity 365 -keypass 123456 -keystore D:/jerry.keystore -storepass 123456 |
2. 查看证书
keytool -list
D:\JDK8_64\bin>keytool -list -help
keytool -list [OPTION]...
列出密钥库中的条目
选项:
-rfc 以 RFC 样式输出
-alias <alias> 要处理的条目的别名
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令
使用 "keytool -help" 获取所有可用命令
示例
1. 详细输出
keytool -list D:/jerry.keystore -storepass 123456 |
输出结果:
D:\JDK8_64\bin>keytool -list -v -keystore D:/jerry.keystore -storepass 123456
密钥库类型: JKS
密钥库提供方: SUN
您的密钥库包含 1 个条目
别名: jerryKey
创建日期: 2021-1-14
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=www.jerryjin.com, OU=单位名称, O=久耐科技, L=湘西, ST=湖南, C=CN
发布者: CN=www.jerryjin.com, OU=单位名称, O=久耐科技, L=湘西, ST=湖南, C=CN
序列号: 1dfecc87
有效期开始日期: Thu Jan 14 19:27:23 CST 2021, 截止日期: Fri Jan 14 19:27:23 CST 2022
证书指纹:
MD5: 7A:D3:20:4D:DF:21:88:A4:38:17:BE:AB:78:EB:4F:D4
SHA1: 5B:AA:79:BE:87:A5:8C:C7:05:2C:F9:00:56:59:E6:C1:60:3F:BF:B4
SHA256: B7:E4:B6:57:5E:99:43:C0:94:A0:CF:9E:2D:E5:E0:74:58:B6:0E:DD:2E:CF:4A:EF:07:B1:B3:FB:14:B0:08:98
签名算法名称: SHA256withRSA
版本: 3
扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 81 90 6B 17 EE 5D 49 4B F1 14 CC 67 1D 2D C7 01 ..k..]IK...g.-..
0010: E1 97 4E DB ..N.
]
]
*******************************************
*******************************************
2. 以 RFC 样式输出
keytool -list D:/jerry.keystore -storepass 123456 |
输出结果:
D:\JDK8_64\bin>keytool -list -rfc -keystore D:/jerry.keystore -storepass 123456
密钥库类型: JKS
密钥库提供方: SUN
您的密钥库包含 1 个条目
别名: jerryKey
创建日期: 2021-1-14
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
-----BEGIN CERTIFICATE-----
MIICWjCCAcOgAwIBAgIEHf7MhzANBgkqhkiG9w0BAQsFADBgMQswCQYDVQQGEwJDTjEQMA4GA1UECBMHeGlhbmd4aTEOMAwGA1UEBxMFaHVuYW4xDDAKBgNVBAoTA3poYjEOMAwGA1UECxMFenJ6eWoxETAPBgNVBAMTCGplcnJ5amluMB4XDTIxMDExNDExMjcyM1oXDTIyMDExNDExMjcyM1owYDELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB3hpYW5neGkxDjAMBgNVBAcTBWh1bmFuMQwwCgYDVQQKEwN6aGIxDjAMBgNVBAsTBXpyenlqMREwDwYDVQQDEwhqZXJyeWppbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsZCzvwpsAvRP5XhGRp2JR0TD/b9luSL0hryCG+/GXXbQIMGq5Z6zBGBEmbxLAB/0I4Yk3qeFBEjhHOFRuCpDm3E7ZnuqF0G0vfsloSXkOu7r58plxAcfUVOm4iFHD1C1ZMfWI/01mOPy+7QGBeH15g0uS3ibkL04Kj7dEIB/m20CAwEAAaMhMB8wHQYDVR0OBBYEFIGQaxfuXUlL8RTMZx0txwHhl07bMA0GCSqGSIb3DQEBCwUAA4GBAEMQxpjt6rvp0gjtCvhOc/oGpZPURCy/ZX5jLJOxdqBgNHLnNxIVZtRpkXgWpjC53PG4Lqr4Wf+27jsE/IBN+r4e45kdBZYKvkOCLAtfAGnIQaom0rK7ETedo4DC8hYV7J9Il4y1FrzpRwGo1mmUSLL+HJxX5B43zGTqmxP3kRx3
-----END CERTIFICATE-----
*******************************************
*******************************************
3. 导出证书
keytool 导出证书,并无私钥。不如直接将
D:/jerry.keystore导入
KeyManager,然后就可以导出需要的格式了
keytool -exportcert
D:\JDK8_64\bin>keytool -exportcert -help
keytool -exportcert [OPTION]...
导出证书
选项:
-rfc 以 RFC 样式输出
-alias <alias> 要处理的条目的别名
-file <filename> 输出文件名
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令
使用 "keytool -help" 获取所有可用命令
示例
从密钥库D:/jerry.keystore
中导出一个别名为jerryKey
的证书D:/jerryKey.crt
|
4. keytool
keytool -help
D:\JDK8_64\bin>keytool -help
密钥和证书管理工具
命令:
-certreq 生成证书请求
-changealias 更改条目的别名
-delete 删除条目
-exportcert 导出证书
-genkeypair 生成密钥对
-genseckey 生成密钥
-gencert 根据证书请求生成证书
-importcert 导入证书或证书链
-importpass 导入口令
-importkeystore 从其他密钥库导入一个或所有条目
-keypasswd 更改条目的密钥口令
-list 列出密钥库中的条目
-printcert 打印证书内容
-printcertreq 打印证书请求的内容
-printcrl 打印 CRL 文件的内容
-storepasswd 更改密钥库的存储口令
使用 "keytool -command_name -help" 获取 command_name 的用法