我在
中报告了确切的问题Jarsigner: certificate chain not found for
我的起点是.pem文件。我的感觉是,它确实也有私钥。我使用以下命令将其导入密钥库:
keytool -importcert -alias myalias -file myfile.pem
对于“信任此证书?[否]”,如果我选择“否”,则导入失败。所以,我选择了“是”。导入确实成功了。我的
keytool -list
生成的输出类似于Jarsigner中列出的输出:找不到证书链。
我的感觉是我确实拥有正确的证书位而不能正确导入。换句话说,我怀疑正在创建“可信证书条目”而不是“密钥条目”,但不知道如何强制keytool创建“密钥条目”。
我该如何解决这个问题?
其他信息:
经过进一步的工作,我倾向于完全相反的结论而不是上面的结论。我现在认为我的pem文件有问题。我查看了一个带有过期密钥的先前密钥库条目。它清楚地说明了PrivateKeyEntry,而我的导入状态为trustedCertEntry。
答案 0 :(得分:1)
您可以尝试从包含整个证书链的文件创建pkcs12。您需要公共证书和根CA证书。命令是这样的:
openssl pkcs12 -export -inkey file.pem -in file.crt -out file.p12 \
-CAfile root-CA.pem -chain -name mykey
获得整个file.p12文件后,可以将完整证书导出为pem格式:
openssl pkcs12 -in file.p12 -out new-cert.pem -nodes -clcerts
或者,如果要导出到具有整个链的Java密钥库格式,则命令为:
keytool -importkeystore -srcstoretype pkcs12 -srckeystore file.p12 \
-srcstorepass <password> -keystore keystore.jks