自验证服务器CA证书
在测试过程中,服务器需要验证SSL;但是握手失败了,就需要解决这一问题.以下有几种可能得解决方案:
- 使用自签名证书
- 可以使用自签名证书,需要将该证书添加到Java的信任库中
- 禁用
SSL证书验证- 这仅用于开发和测试环境,不推荐生产环境,因为它会降低安全性
- 配置信任库
- 配置证书导入到Java的信任库中,以便Java应用程序可以信任该证书
使用自签名证书
- 获取自签名证书(通常是
.crt或者.pem文件)
1 | openssl s_client -connect 192.168.116.130:993 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM > mailserver_cert1.pem |
1 | find / -name "mailserver_cert1.pem" |
- 将证书导入到
Java的信任库中
1 | path/to/keytool -import -alias mailserver1 -keystore path/to/security/cacerts -file path/to/mailserver_cert1.pem |
默认情况下,Java的 cacerts keystore 的密码是固定的,通常是 changeit。如果没有更改过密码,可以使用 changeit 作为密码。如果需要或已经更改过密码,则应使用新的密码。
1 | 输入keystore密码: |
完成这些步骤后,证书应该成功导入到Java信任库中。
多证书导入步骤
准备证书文件
将不同的
cert.pem文件保存到本地;例如:mailserver_cert1.pemmailserver_cert2.pem- …
使用
keytool导入证书- 确保每个证书都有唯一的别名,例如
mailserver1,mailserver2..等 - 使用以下命令导入证书
1
2
3path/to/keytool -import -alias mailserver1 -keystore path/to/security/cacerts -file path/to/mailserver_cert1.pem
path/to/keytool -import -alias mailserver2 -keystore path/to/security/cacerts -file path/to/mailserver_cert2.pem- 确保每个证书都有唯一的别名,例如
验证证书导入
- 使用以下命令查看
keystore中的证书列表,确保所有证书都已导入
1
2path/to/keytool -list -keystore path/to/security/cacerts
- 使用以下命令查看