自验证服务器CA证书

igxiaoshan Lv5

在测试过程中,服务器需要验证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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
输入keystore密码:
所有者: ...
发布者: ...
序列号: ...
有效期: ...
证书指纹:
MD5: ...
SHA1: ...
SHA256: ...
签名算法名称: ...
版本: ...

是否信任此证书? [否]: 是
证书已添加到keystore中

完成这些步骤后,证书应该成功导入到Java信任库中。

多证书导入步骤

准备证书文件

  • 将不同的cert.pem文件保存到本地;例如:

    • mailserver_cert1.pem
    • mailserver_cert2.pem
  • 使用keytool导入证书

    • 确保每个证书都有唯一的别名,例如mailserver1,mailserver2..等
    • 使用以下命令导入证书
    1
    2
    3
    path/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
    2
    path/to/keytool -list -keystore path/to/security/cacerts

此页目录
自验证服务器CA证书