web-dev-qa-db-fra.com

Comment ignorer la vérification du certificat lors de l'utilisation de OpenSSL S_Client Connect?

J'essaie de vous connecter à un serveur à l'aide de la commande suivante:

openssl s_client -connect xx.xx.xx.xx:443

Erreur:

CONNECTED(00000005)
depth=0 L = XXXXXXX
verify error:num=20:**unable to get local issuer certificate**
verify return:1
depth=0 L = XXXXXXXX
verify error:num=21:**unable to verify the first certificate
verify return:1**
---
Certificate chain
 0 s:/L=XXXX
   i:/C=XXXX
---
Server certificate
-----BEGIN CERTIFICATE-----
....
...
..
<removed cert>
..
...
....
-----END CERTIFICATE-----
subject=xxxxxxx CN=*xxx.xom
issuer=XXXX CA
---
No client certificate CA names sent
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 2281 bytes and written 326 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: 52A27BC97001D52A7DA4A73FBA87C7DD2902A0C55B0AE9FAA87A3A8DBA94A7CE
    Session-ID-ctx:
    Master-Key: ECD435DCDD59B2BAD50A1BF8BAEA39E68058524A082DC219CEE290DB7A80A37AE4E763DF7FA
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 5d b4 5c fe ca 2d 54 2e-31 49 74 a6 18 a7 3a f5   ].\..-T.1It...:.
    XXXX
    0080 - ab 5c 0a bc 45 9c 10 01-9f 3b ce 6e ee 1a a6 99   .\..E....;.n....
    0090 - 04 81 ea e0 be a5 91 a2-18 09 d4 b8 90 b7 c7 50   ...............P
    00a0 - f7 7d 73 e5 b1 3d 0d 58-20 07 78 7b 57 c4 34 58   .}s..=.X .x{W.4X

    Start Time: 1566410644
    Timeout   : 7200 (sec)
    **Verify return code: 21 (unable to verify the first certificate)**
---

Il semble donc que la commande essaie de vérifier le certificat que je ne veux pas. Comment puis-je contourner la vérification? Y a-t-il quelque chose de similaire à curl - k drapeau?

6
Carlsson Evert

Openssl's s_client ne se termine jamais sur le mauvais certificat à moins que vous ne le demandiez pas trop en utilisant
[.____] -verify_return_error argument (comme déjà suggéré par @bartonjs dans les commentaires).

Vous pouvez en savoir plus à ce sujet dans l'homme page man 1 s_client ou en ligne . Chercher -verify argument ou plus tard dans [~ # ~] Notes [~ # ~ ~] :=:

S'il y a des problèmes de vérification d'un certificat de serveur, le -showcerts Option peut être utilisée pour afficher tous les certificats envoyés par le serveur.

Les s_client Utility est un outil de test et est conçu pour continuer la poignée de main après toutes les erreurs de vérification du certificat. En conséquence, il acceptera toute chaîne de certificats (fiduciaire ou non) envoyée par le pair. Aucun Test Applications ne devrait pas faire cela car il les rend vulnérables à une attaque MITM. Ce comportement peut être changé avec le -verify_return_error Option: Toutes les erreurs de vérification sont ensuite renvoyées à l'abandon de la poignée de main.

Si le résultat que vous voyez est la dernière "erreur", vous voyez, c'est probablement quelque chose d'autre sur le serveur qui met fin à la connexion à ce moment-là. Vous devriez voir la raison dans les journaux du serveur Web.

1
Kepi