如何从现有证书(abc.crt)和abc.key文件创建密钥库?


77

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

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

Answers:


135

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

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

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

如果确实需要,可以使用keytool -importkeystorekeytool从Java 6中获得)将其转换为JKS :

keytool -importkeystore -srckeystore abc.p12 \
        -srcstoretype PKCS12 \
        -destkeystore abc.jks \
        -deststoretype JKS

感谢Bruno,能否让我知道从哪里可以获取openssl实用程序?
拉维·in那

1
这里还有一个问题,是生成的密钥库平台是否特定?如果我在Windows中创建密钥库并在Unix中使用它,是否可以正常工作?
拉维·贾因

1
生成的密钥库与平台无关。OSX和大多数Linux发行版都应随附OpenSSL(否则,只需安装该软件包)。Windows也有二进制文件(例如,在这里,尽管您可能也可以找到其他地方。)
Bruno 2012年

1
我还应该指出,对于PKCS12密钥库,密钥密码与商店的密码相同(但是对于其他类型的商店,它们的密码可能有所不同JKS)。
布鲁诺

3
@HenningMakholm,您的私钥文件可能没有受密码保护,创建PKCS#12文件时必须设置一个。
布鲁诺

38

您必须使用OpenSSL和keytool。

适用于CER和PVK文件的OpenSSL> P12

OpenSSL的PKCS12 -export -name servercert -in selfsignedcert.crt -inkey serverprivatekey.key退房手续myp12keystore.p12

p12的键盘工具> JKS

密钥工具-importkeystore -destkeystore mykeystore.jks -srckeystore myp12keystore.p12 -srcstoretype PKCS12 -alias servercert


4
私钥在哪里?
2015年

1
那是我不明白的!
2016年

1
这与其他先前的答案有何不同?
vikingsteve

谢谢。我有pkcs#7证书。我应该使用pkcs12还是7?
Abel Jojo

请注意我们传递的选项-name(对于PKCS)-alias(对于Jks)。
Vijayanand19年

1

除了@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


1

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

openssl pkcs12 -export -in abc.crt -inkey abc.key -out abc.p12 -name localhost  -passout pass:changeit

0

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

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

您可以使用以下方法检查结果:

keytool -list -keystore keystore-file.jks -v
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.