客户端如何在密钥库中设置证书链?

how does client set the certificate chain in the keystore?

我们的客户端需要使用双向 SSL 连接服务器 authentication.In 我的情况是,我使用 'keytool -genkey' 生成密钥库并使用 'keytool -certreq' 导出 csr file.The服务器端获取我的 csr 文件并由 CA 签名,然后 return 给我一个由 CA 和根 CA cer 签名的新 cer 文件。 问题是我应该如何更新我的密钥库以完成服务器端身份验证? 这是我生成密钥库的步骤。

keytool -genkey -alias client -keyalg RSA -keystore D://key/client.keystore -validity 3650
keytool -certreq -alias client -keystore D://key/client.keystore -file client.csr

使用 wireshark,我可以发现我的客户端发送了一个由我的密钥库生成的自签名证书,但服务器端实际上将由 CA 作为客户端 cer 签名的 cer 文件导入到它的信任库中,这使得握手每次都失败。

PS:服务器的cer文件已经导入我的truststore,所以问题只在客户端的cer文件上。Here is the wireshake capture

您需要使用相同的别名将已签名的证书和链导入生成密钥对和 CSR 的同一密钥库,并且 使用 -trustcacerts 选项.

但是您的捕获显示问题出在服务器证书上。客户证书甚至都没有被要求,更不用说发送了。