我们的客户端需要使用双向SSL身份验证连接服务器。在我的情况下,我使用'keytool -genkey'生成密钥库并使用'keytool -certreq'导出csr文件。服务器端获取我的csr文件并由CA签名,然后返回由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文件已经导入我的信任库,所以问题只出在客户端cer文件上。Here is the wireshake capture
答案 0 :(得分:0)
您需要使用相同的别名将签名的证书和链导入到生成密钥对和CSR的同一密钥库中,并使用-trustcacerts
选项将不导入。
但是,您的捕获显示问题出在服务器证书上。客户证书甚至没有被要求,更不用说发送了。