您可能已将中间 CA 证书导入到密钥库中,但未将其与拥有客户端证书及其私钥的条目关联。你应该能够看到这个使用keytool -v -list -keystore store.jks
。如果每个别名条目仅获得一个证书,则它们不会在一起。
您需要将证书及其链一起导入到包含您的私钥的密钥库别名中。
要找出哪个密钥库别名具有私钥,请使用keytool -list -keystore store.jks
(我假设这里是 JKS 商店类型)。这会告诉你这样的事情:
Your keystore contains 1 entry
myalias, Feb 15, 2012, PrivateKeyEntry,
Certificate fingerprint (MD5): xxxxxxxx
这里,别名是myalias
。如果你使用-v
除此之外,你应该看到Alias Name: myalias
.
如果您还没有单独拥有它,请从密钥库导出您的客户端证书:
keytool -exportcert -rfc -file clientcert.pem -keystore store.jks -alias myalias
这应该会给你一个 PEM 文件。
使用文本编辑器(或cat
),准备文件(我们称之为bundle.pem
)与该客户端证书和中间 CA 证书(如果需要,可能还有根 CA 证书本身),以便客户端证书位于开头,其颁发者证书位于下方。
这应该看起来像:
-----BEGIN CERTIFICATE-----
MIICajCCAdOgAwIBAgIBAjANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJVSzEa
....
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICkjCCAfugAwIBAgIJAKm5bDEMxZd7MA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNV
....
-----END CERTIFICATE-----
现在,将此捆绑包重新导入到您的私钥所在的别名中:
keytool -importcert -keystore store.jks -alias myalias -file bundle.pem