如何使用tcpdump确认双向SSL连接中客户端证书是否已发送
结论
你提供的两处排查信息已经可以100%确认当前建立的是单向SSL连接,未启用双向SSL校验。
判定依据
双向SSL(mTLS)的标准握手流程存在强制要求:
- 服务端在发送自身证书后,必须发送
CertificateRequest报文要求客户端提交证书,该报文中会携带服务端信任的CA列表,也就是openssl s_client测试中会展示的「acceptable CAs」信息 - 你提供的ssldump日志中,服务端在
ServerHello、Certificate报文后直接发送了ServerHelloDone,完全没有CertificateRequest环节,客户端后续也仅发送了ClientKeyExchange,没有出现客户端证书上传的步骤,完全符合单向SSL的握手特征
正确的tcpdump抓包验证操作指引
你可以按照以下步骤重新抓包确认结果:
- 先停止Apache服务,执行以下命令确认无存量的OAM 5575端口连接:
ss -nt dst 172.31.xx.yy:5575
确认输出为空后再继续操作。 - 在webgate机器执行tcpdump抓包命令:
tcpdump -i any -w oam_ssl_handshake.pcap host 172.31.xx.yy and port 5575
参数说明:-i any:抓取所有网卡的流量-w oam_ssl_handshake.pcap:将原始流量写入pcap文件,方便后续分析- 后面的过滤规则仅保留和OAM服务器5575端口的通信,避免冗余包干扰
- 保持tcpdump运行,启动Apache,通过浏览器发送请求触发webgate和OAM的连接建立,等待10秒后按
Ctrl+C停止抓包。 - 可以通过两种方式分析包:
- 用ssldump解析:
ssldump -r oam_ssl_handshake.pcap - 用Wireshark打开pcap文件,输入过滤规则
tls.handshake.type == 11,如果没有匹配结果,说明服务端从未发送证书请求,确认是单向SSL。
- 用ssldump解析:
后续排查建议
如果预期要启用双向SSL,需要检查OAM服务器端的SSL配置,确认是否开启了客户端证书校验选项、信任CA库配置是否正确,服务端未开启相关配置的情况下不会主动发送CertificateRequest报文。
内容的提问来源于stack exchange,提问作者jstack100
相关产品推荐
相关产品推荐

