web-dev-qa-db-ja.com

socatにクライアント証明書を無視させる方法は?

アプリケーションがサーバーの証明書をチェックするかどうかをチェックするようにリスナーを設定しようとしています(そうでないことを強く想定しています)。だから私は自己署名証明書を作成しました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のみをチェックするものだと思っていました(少なくともそれはマンページに記載されています)。無効にできる追加のチェックを実行しますか?

クライアントからの有効な証明書ではなく、サーバー側が文句を言う他の理由はありますか?

7
user857990

問題はcertificate request部分。クライアントアプリケーションは証明書を送信せず、オプションverify=0が正常に機能するsocatリスナーに追加されます。 verifyはデフォルトでTrueに設定されています。

9
user857990