用户要全面测试服务端的SSL证书配置,包括协议支持、密码套件、证书有效性、SNI、客户端认证等。需要根据不同的测试目的组合不同的OpenSSL参数,并正确解读输出结果。因此用户通过 OpenSSL 的 s_client 工具模拟客户端连接,可以测试服务端的 SSL证书配置,包括证书链、协议版本、加密套件等。下面说一下详细的步骤和常见场景:

1. 基础连接测试

检查服务端是否监听 SSL/TLS 端口,并查看证书信息:

bash

复制

下载

openssl s_client -connect example.com:443 

输出信息:证书详情、会话状态、支持的协议和密码套件。 

按 Ctrl+C 退出。

2. 指定 TLS 协议版本

测试服务端是否支持特定 TLS 版本(如 TLS 1.2 或 1.3):

bash

复制

下载

测试 TLS 1.2

openssl s_client 

connect example.com:443 -tls1_2

测试 TLS 1.3

openssl s_client 

connect example.com:443 -tls1_3 

若连接失败,可能服务端禁用了该协议。

3. 检查证书链有效性

强制验证证书链的完整性(需系统信任根证书):

bash

复制

下载

openssl s_client -connect example.com:443 -verify_return_error -CApath /etc/ssl/certs 

CApath:指定系统 CA 证书存储路径(如 /etc/ssl/certs 或 /etc/pki/tls/certs)。 

若报错 verify error,可能是证书链不完整或根证书不受信任。

4. 测试特定密码套件

验证服务端是否支持指定的加密套件:

bash

复制

下载

openssl s_client -connect example.com:443 -cipher 'ECDHE-ECDSA-AES256-GCM-SHA384' 

若连接失败,说明服务端不支持该套件。 

查看支持的套件列表:openssl ciphers -v 'ALL:COMPLEMENTOFALL'。

5. 检查 SNI(Server Name Indication)

测试服务端是否支持 SNI(适用于多域名托管):

bash

复制

下载

openssl s_client -connect example.com:443 -servername example.com 

若服务端返回的证书与 -servername 指定的域名匹配,则 SNI 配置正确。

6. 调试握手过程

查看详细的 SSL/TLS 握手过程:

bash

复制

下载

openssl s_client -connect example.com:443 -msg -state -debug 

msg:显示协议握手消息。 

state:打印连接状态变化。 

debug:输出调试信息。

7. 测试客户端证书认证

如果服务端要求客户端证书,需提供证书和私钥:

bash

复制

下载

openssl s_client -connect example.com:443 -cert client.crt -key client.key 

cert:客户端证书路径。 

key:客户端私钥路径。

8. 保存输出到文件

将连接详情保存到文件以便分析:

bash

复制

下载

openssl s_client -connect example.com:443 > ssl_test.log 2>&1

9. 常见问题排查 

连接被拒绝:检查端口是否正确、防火墙规则、服务是否运行。 

证书验证失败:确认证书链完整、证书未过期、域名匹配。 

协议不支持:服务端可能禁用了旧版本 TLS(如 TLS 1.0/1.1)。

示例命令合集

bash

复制

下载

测试 TLS 1.3 和特定密码套件

openssl s_client 

connect example.com:443 -tls1_3 -cipher 'TLS_AES_256_GCM_SHA384'

验证证书链并检查 SNI

openssl s_client 

connect example.com:443 -verify_return_error -CApath /etc/ssl/certs -servername

example.com

调试握手过程并保存日志

openssl s_client 

connect example.com:443 -msg -state -debug > debug.log 2>&1

用户通过上述九个步骤和方法,您可以全面测试服务端的 SSL证书配置,确保其符合安全最佳实践(如禁用弱协议、使用强密码套件、证书有效性等)。