这很简单,至少使用jdk6......
bash$ keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN=foo.example.com,L=墨尔本,ST=维多利亚,C=AU'
输入密钥库密码:
重新输入新的密码:
输入密钥密码
(如果与密钥库密码相同,则返回):
bash$ keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
输入密钥库密码:asdasd
证书:
数据:
版本:3 (0x2)
序列号:1237334757 (0x49c03ae5)
签名算法:dsaWithSHA1
发行人:C=AU,ST=维多利亚,L=墨尔本,CN=foo.example.com
有效性
不早于:格林威治标准时间 2009 年 3 月 18 日 00:05:57
不晚于:格林威治标准时间 2009 年 6 月 16 日 00:05:57
主题:C=AU,ST=维多利亚,L=墨尔本,CN=foo.example.com
主题公钥信息:
公钥算法:dsaEncryption
DSA 公钥:
酒馆:
00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14:
7e:a6:2e:5a:45:f9:2f:b5:2d:f4:34:27:e6:53:c7:
bash$ keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
输入目标密钥库密码:
重新输入新的密码:
输入源密钥库密码:
已成功导入别名 foo 的条目。
导入命令完成:1 个条目成功导入,0 个条目失败或取消
bash$ openssl pkcs12 -in foo.p12 -out foo.pem
输入导入密码:
MAC 验证正常
输入 PEM 密码:
验证 - 输入 PEM 密码:
bash$ openssl x509 -text -in foo.pem
证书:
数据:
版本:3 (0x2)
序列号:1237334757 (0x49c03ae5)
签名算法:dsaWithSHA1
发行人:C=AU,ST=维多利亚,L=墨尔本,CN=foo.example.com
有效性
不早于:格林威治标准时间 2009 年 3 月 18 日 00:05:57
不晚于:格林威治标准时间 2009 年 6 月 16 日 00:05:57
主题:C=AU,ST=维多利亚,L=墨尔本,CN=foo.example.com
主题公钥信息:
公钥算法:dsaEncryption
DSA 公钥:
酒馆:
00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14:
7e:a6:2e:5a:45:f9:2f:b5:2d:f4:34:27:e6:53:c7:
bash$ openssl dsa -text -in foo.pem
读取 DSA 密钥
输入 PEM 密码:
私钥:(1024 位)
私人:
00:8f:b1:af:55:63:92:7c:d2:0f:e6:f3:a2:f5:ff:
1a:7a:fe:8c:39:dd
酒馆:
00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14:
7e:a6:2e:5a:45:f9:2f:b5:2d:f4:34:27:e6:53:c7:
你最终得到:
- foo.jks - java 格式的密钥库。
- foo.p12 - PKCS#12 格式的密钥库。
- foo.pem - 来自密钥库的所有密钥和证书,采用 PEM 格式。
(如果您愿意,可以将最后一个文件拆分为密钥和证书。)
命令摘要 - 创建 JKS 密钥库:
keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU'
命令摘要 - 将 JKS 密钥库转换为 PKCS#12 密钥库,然后转换为 PEM 文件:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
如果您的 JKS 密钥库中有多个证书,并且您只想导出与其中一个别名关联的证书和密钥,则可以使用以下变体:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcalias foo \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
命令摘要 - 将 JKS 密钥库与 PEM 文件进行比较:
keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
openssl x509 -text -in foo.pem
openssl dsa -text -in foo.pem