这个答案紧跟着猫头鹰和马特的回应。它适用于 SE/EE 安装,不适用于 ME/mobile/Android SSL。
由于还没有人提到它,我将提到“生产方式”来解决这个问题:按照HttpClient中AuthSSLProtocolSocketFactory类中的步骤更新您的信任存储和密钥存储。
- 导入可信证书并生成信任库文件
keytool -import -alias "my server cert" -file server.crt -keystore my.truststore
- 生成新密钥(使用与信任库相同的密码)
keytool -genkey -v -alias "my client key" -validity 365 -keystore my.keystore
- 发出证书签名请求 (CSR)
keytool -certreq -alias "my client key" -file mycertreq.csr -keystore my.keystore
(自签名或签署证书)
导入受信任的 CA 根证书
keytool -import -alias "my trusted ca" -file caroot.crt -keystore my.keystore
- 导入包含完整证书链的 PKCS#7 文件
keytool -import -alias "my client key" -file mycert.p7 -keystore my.keystore
- 验证生成的密钥库文件的内容
keytool -list -v -keystore my.keystore
如果没有服务器证书,请生成一个 JKS 格式的证书,然后将其导出为 CRT 文件。来源: keytool 文档
keytool -genkey -alias server-alias -keyalg RSA -keypass changeit
-storepass changeit -keystore my.keystore
keytool -export -alias server-alias -storepass changeit
-file server.crt -keystore my.keystore