我正在尝试将证书和密钥文件导入密钥库,但我无法做到这一点。
如何通过导入现有证书 (abc.crt) 和 abc.key 文件来创建密钥库?
最简单的可能是使用 OpenSSL 创建一个 PKCS#12 文件:
openssl pkcs12 -export -in abc.crt -inkey abc.key -out abc.p12
您应该能够使用PKCS12
密钥库类型直接使用生成的文件。
如果你真的需要,你可以使用keytool -importkeystore
(在keytool
Java 6 中可用)将其转换为 JKS:
keytool -importkeystore -srckeystore abc.p12 \
-srcstoretype PKCS12 \
-destkeystore abc.jks \
-deststoretype 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
for 别名,否则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