Ssl 如何从现有证书(abc.crt)和abc.key文件创建密钥库?
我正在尝试将证书和密钥文件导入密钥库,但无法做到这一点Ssl 如何从现有证书(abc.crt)和abc.key文件创建密钥库?,ssl,keytool,Ssl,Keytool,我正在尝试将证书和密钥文件导入密钥库,但无法做到这一点 如何通过导入现有证书(abc.crt)和abc.key文件来创建密钥库?最简单的方法可能是使用OpenSSL创建PKCS#12文件: openssl pkcs12 -export -in abc.crt -inkey abc.key -out abc.p12 您应该能够使用PKCS12keystore类型直接使用生成的文件 如果确实需要,可以使用keytool-importkeystore将其转换为JKS(可从Java 6的keytool
如何通过导入现有证书(abc.crt)和abc.key文件来创建密钥库?最简单的方法可能是使用OpenSSL创建PKCS#12文件:
openssl pkcs12 -export -in abc.crt -inkey abc.key -out abc.p12
您应该能够使用PKCS12
keystore类型直接使用生成的文件
如果确实需要,可以使用keytool-importkeystore
将其转换为JKS(可从Java 6的keytool
中获得):
您必须使用OpenSSL和keytool CER和PVK文件的OpenSSL>P12 openssl pkcs12-导出-nameservercert-inselfsignedcert.crt-inkeyserverprivatekey.key-outmyp12keystore.p12 p12>JKS的键工具 keytool-importkeystore-destkeystoremykeystore.jks-srckeystoremyp12keystore.p12-srcstoretypkcs12-别名servercert
除了@Bruno的答案外,您还需要为alias提供
-name
,否则Tomcat将抛出别名Tomcat未识别密钥条目
错误
示例命令:
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
加上@MK Yung和@Bruno的答案。。请输入目标密钥库的密码。当我在没有密码的情况下输入命令时,我看到控制台挂起
openssl pkcs12 -export -in abc.crt -inkey abc.key -out abc.p12 -name localhost -passout pass:changeit
谢谢Bruno,您能告诉我从哪里可以获得openssl实用程序吗?这里还有一个问题,生成的密钥库是特定于平台的吗?这意味着如果我在windows中创建密钥库并在unix中使用它,它会工作吗?生成的密钥库与平台无关。OSX和大多数Linux发行版应该附带OpenSSL(否则,只需安装软件包)。Windows也有二进制文件(例如,尽管你可能也能找到其他地方。)我还应该指出,对于
PKCS12
密钥库,密钥密码与存储的密码相同(而对于其他类型的存储,尤其是JKS
),密钥密码可能不同。@HenningMakholm,您的私钥文件可能没有密码保护,您必须在创建PKCS#12文件时设置一个。私钥在哪里?这就是我不明白的!!这与前面的回答有什么不同?谢谢。我有pkcs#7证书。我应该使用pkcs12还是PKCS7?请注意我们正在传递的选项-name(对于PKCS)-alias(对于Jks)。
openssl pkcs12 -export -in abc.crt -inkey abc.key -out abc.p12 -name localhost -passout pass:changeit