web-dev-qa-db-fra.com

Comment faire de la Socat ignore le certificat client?

J'essaie de configurer un auditeur pour vérifier si une application vérifie le certificat du serveur (je suppose fermement que ce n'est pas). Donc, j'ai créé un certificat auto-signé fake.pem Pour un auditeur et j'essaie de vous connecter à la demande.

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

Les paquets que je capturent dans Wireshark sont

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`

Je pensais que la Socat ne vérifie que l'option cafile (au moins c'est ce qu'il dit dans le MANPAGE). Effectue-t-il des contrôles supplémentaires que je pourrais désactiver?

Pourrait-il y avoir d'autres bonnes raisons pour lesquelles le côté serveur se plaint n'est-il pas un certificat valide du client?

7
user857990

Le problème était le certificate request partie. L'application client n'a envoyé aucun certificat et si option verify=0 est ajouté à l'auditeur Socat, cela fonctionne bien. verify est défini sur true par défaut.

9
user857990