如何让 socat 忽略客户端证书?

信息安全 tls 证书 中间人 索卡特
2021-08-28 19:30:40

我正在尝试设置一个侦听器来检查应用程序是否检查服务器的证书(我强烈假设它不是)。因此,我fake.pem为侦听器创建了一个自签名证书,并尝试从应用程序连接到它。

socat openssl-listen:443,reuseaddr,cert=./fake.pem echo

我在 Wireshark 中捕获的数据包是

Client (C) -> Server(S): SYN
S->C: SYN-ACK
C->S: ACK
C->S: sClient Hello
S->C: ACK
S->C: Server Hello, Certificate, Server Key Exchange, Certificate Request, Server Hello Done
C->S: Certificate, Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message
S->C: Alert (Level: Fatal, Description: handshake Failure)
S->C: RST ACK`

我认为 socat 只检查选项cafile(至少它在联机帮助页中是这样说的)。它是否执行我可以禁用的其他检查?

除了没有来自客户端的有效证书之外,服务器端会抱怨还有其他充分的理由吗?

1个回答

问题出在certificate request零件上。客户端应用程序没有发送任何证书,如果将选项verify=0添加到 socat 侦听器中,它可以正常工作。verify默认设置为 True。