关于这个话题有很多资源,但是我没有发现哪个涵盖了这个稍微特殊的情况。
我有4个文件;
我希望将它们导入新的密钥库。
某些站点build议使用DER格式,并逐个导入它们,但由于密钥未被识别而失败。
另一个网站build议一个特殊的“ImportKey”类来运行导入,这工作,直到我看到链断了。 即在证书链长度是1,忽略中间和约。
一些网站build议PKCS7,但我甚至不能得到一个链。 其他的build议PKCS12格式,但就我的testing失败,以及获得整个链。
任何build议或提示都非常受欢迎。
这可能并不完美,但是我对使用keytool
一些注意事项进行了修改。
将根或中级CA证书导入到现有的Java密钥库:
keytool -import -trustcacerts -alias root -file ca_geotrust_global.pem -keystore yourkeystore.jks keytool -import -trustcacerts -alias root -file intermediate_rapidssl.pem -keystore yourkeystore.jks
导入前将证书和私钥合并到一个文件中。
cat certificate.pem privatekey.pem > combined.pem
这应该导致类似于以下格式的文件。
BEGIN证书
…
结束证书
开始RSA私钥
…
结束RSA私钥
将已签名的主证书和密钥导入到现有的Java密钥库:
keytool -import -trustcacerts -alias yourdomain -file combined.pem -keystore yourkeystore.jks
将所有* .pem文件连接成一个pem文件,如all.pem然后用私钥+ all.pem创buildp12格式的密钥库
openssl pkcs12 -export -inkey private.key -in all.pem -name test -out test.p12
然后将p12导出到jks中
keytool -importkeystore -srckeystore test.p12 -srcstoretype pkcs12 -destkeystore test.jks
如上所述,keytool不提供从单个(组合)文件导入证书+私钥的方法。 它运行良好,但只有证书被导入,而私钥被忽略。 你可以通过keytool -list -v -keystore yourkeystore.jks
检查它 – 你的域名是TrustedCertEntry,而不是PrivateKeyEntry。
因此,要解决最初的问题,首先应该使用openssl(或类似工具)创buildPKCS#12密钥库,然后使用keytool -importkeystore
导入密钥库。