Aller au contenu
ecdsa.com
.NET on Linux (SslStream over OpenSSL).NET

Message d’erreur

SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL.

Également affiché sous la forme

  • Interop+OpenSsl+SslException: SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL.

La chaîne d’exceptions se lit ainsi : « The SSL connection could not be established » → « Authentication failed, see inner exception. » → ce message → la raison donnée par OpenSSL (par exemple « error:0A000410:SSL routines::sslv3 alert handshake failure » avec OpenSSL 3.0, « ssl/tls alert handshake failure » avec 3.3 et versions ultérieures). Sous Windows (Schannel) et macOS (pile TLS d’Apple), .NET signale plutôt ces échecs par des messages propres à chaque plateforme.

.NET on Linux (SslStream over OpenSSL) — inner exception carrying the OpenSSL reason

Ce que cela signifie

Sous Linux, le SslStream de .NET repose sur l’OpenSSL du système, et le handshake a échoué dans OpenSSL avec l’erreur SSL_ERROR_SSL. Cette ligne n’est qu’une enveloppe ; l’exception interne suivante (Interop+Crypto+OpenSslCryptographicException) contient la véritable raison donnée par OpenSSL, comme une alerte envoyée par le serveur ou une version du protocole refusée.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Lire la raison OpenSSL dans l’exception la plus interne

    Le code d’erreur error:0A… et son texte identifient le problème ; associez-le à sa cause comme indiqué.

    text
    Interop+Crypto+OpenSslCryptographicException: error:0A000410:SSL routines::sslv3 alert handshake failure
          -> the server rejected the offered suites/versions (or wants a client certificate)
    error:0A00042E:SSL routines::tlsv1 alert protocol version   -> the server only speaks TLS 1.0/1.1
    error:0A00018A:SSL routines::dh key too small              -> the server uses 1024-bit DH
  2. 2.

    Comparer les capacités du serveur et du client

    Énumérez les suites du serveur et les paramètres OpenSSL locaux par défaut.

    bash
    nmap --script ssl-enum-ciphers -p 443 legacy.example.com     # what the server offers
    openssl ciphers -v 'DEFAULT' | head                            # what this system's OpenSSL offers
  3. 3.

    Corriger le serveur, pas la politique du client

    Modernisez la configuration TLS du serveur ; n’assouplissez la politique OpenSSL du client qu’à titre d’exception ciblée et temporaire.

    text
    Server side: enable TLS 1.2/1.3 with ECDHE + AES-GCM (or ChaCha20) suites. Lowering the
    system-wide OpenSSL policy (CipherString=DEFAULT@SECLEVEL=1 in openssl.cnf) affects every
    application on the host and should only be a short-lived exception for an isolated legacy peer.

Erreurs associées

Parcourir toute la base de données des erreurs de signature