【发布时间】:2012-08-14 12:27:23
【问题描述】:
我正在尝试将证书和密钥文件导入密钥库,但我无法做到。
如何通过导入现有证书 (abc.crt) 和 abc.key 文件来创建密钥库?
【问题讨论】:
我正在尝试将证书和密钥文件导入密钥库,但我无法做到。
如何通过导入现有证书 (abc.crt) 和 abc.key 文件来创建密钥库?
【问题讨论】:
最简单的可能是使用 OpenSSL 创建一个 PKCS#12 文件:
openssl pkcs12 -export -in abc.crt -inkey abc.key -out abc.p12
您应该能够使用PKCS12 密钥库类型直接使用生成的文件。
如果您确实需要,可以使用 keytool -importkeystore 将其转换为 JKS(在 Java 6 中的 keytool 中可用):
keytool -importkeystore -srckeystore abc.p12 \
-srcstoretype PKCS12 \
-destkeystore abc.jks \
-deststoretype JKS
【讨论】:
PKCS12 密钥库,密钥密码与商店的密码相同(而对于其他类型的商店,它们可能不同,尤其是 JKS)。
您必须使用 OpenSSL 和 keytool。
用于 CER 和 PVK 文件的 OpenSSL > P12
openssl pkcs12 -export -name servercert -in selfsignedcert.crt -inkey serverprivatekey.key -out myp12keystore.p12
p12 的 Keytool > JKS
keytool -importkeystore -destkeystore mykeystore.jks -srckeystore myp12keystore.p12 -srcstoretype pkcs12 -alias servercert
【讨论】:
添加到@MK Yung 和@Bruno 的答案.. 请输入目标密钥库的密码。当我在没有密码的情况下输入命令时,我看到我的控制台挂起。
openssl pkcs12 -export -in abc.crt -inkey abc.key -out abc.p12 -name localhost -passout pass:changeit
【讨论】:
除了@Bruno 的回答,还需要提供-name 作为别名,否则Tomcat 会抛出Alias name tomcat does not identify a key entry 错误
示例命令:
openssl pkcs12 -export -in localhost.crt -inkey localhost.key -out localhost.p12 -name localhost
【讨论】:
如果密钥库是用于 tomcat 的,那么在使用上述答案创建密钥库之后,您必须添加最后一步来为密钥创建“tomcat”别名:
keytool -changealias -alias "1" -destalias "tomcat" -keystore keystore-file.jks
您可以通过以下方式检查结果:
keytool -list -keystore keystore-file.jks -v
【讨论】:
理想情况下,您应该收到 3 个文件: ca_bundle.crt yourname.crt yourname.key
使用以下命令创建它的 pk cs 12 版本:
openssl pkcs12 -export -out yourname.pfx -inkey yourname.key -in yourname.crt -certfile ca_bundle.crt
然后您需要将其导入到易于在 Apache 中配置的密钥库中
keytool -importkeystore -srckeystore yourname.pfx -srcstorepass yourpassword -srcstoretype pkcs12 -destkeystore yourkeystore.jks -deststoretype jks -deststorepass yourkeystorepassword
【讨论】: