88

我正在尝试将证书和密钥文件导入密钥库,但我无法做到这一点。

如何通过导入现有证书 (abc.crt) 和 abc.key 文件来创建密钥库?

4

6 回答 6

148

最简单的可能是使用 OpenSSL 创建一个 PKCS#12 文件:

openssl pkcs12 -export -in abc.crt -inkey abc.key -out abc.p12

您应该能够使用PKCS12密钥库类型直接使用生成的文件。

如果你真的需要,你可以使用keytool -importkeystore(在keytoolJava 6 中可用)将其转换为 JKS:

keytool -importkeystore -srckeystore abc.p12 \
        -srcstoretype PKCS12 \
        -destkeystore abc.jks \
        -deststoretype JKS
于 2012-08-14T14:41:50.670 回答
43

您必须使用 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

于 2015-02-13T17:51:30.957 回答
4

添加到@MK Yung 和@Bruno 的答案.. 输入目标密钥库的密码。当我输入没有密码的命令时,我看到我的控制台挂起。

openssl pkcs12 -export -in abc.crt -inkey abc.key -out abc.p12 -name localhost  -passout pass:changeit
于 2020-04-29T08:15:23.317 回答
2

除了@Bruno 的回答,还需要提供-namefor 别名,否则Tomcat 会抛出Alias name tomcat does not identify a key entry错误

示例命令: openssl pkcs12 -export -in localhost.crt -inkey localhost.key -out localhost.p12 -name localhost

于 2019-02-05T03:48:19.280 回答
1

如果密钥库是用于 tomcat 的,那么在使用上述答案创建密钥库之后,您必须添加最后一步来为密钥创建“tomcat”别名:

keytool -changealias -alias "1" -destalias "tomcat" -keystore keystore-file.jks

您可以通过以下方式检查结果:

keytool -list -keystore keystore-file.jks -v
于 2019-09-24T11:09:59.990 回答
1

理想情况下,您应该收到 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
于 2021-10-07T06:02:08.320 回答