Aller au contenu
ecdsa.com
.NET HttpClient.NET

Message d’erreur

The SSL connection could not be established, see inner exception.

Également affiché sous la forme

  • System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.

Le texte n’a pas changé de .NET Core 3.x à .NET 10. Des frameworks (Refit, gRPC, SDK Azure) peuvent l’envelopper une fois de plus : l’exception interne peut alors se trouver deux ou trois niveaux plus bas.

.NET HttpClient — HttpRequestException wrapping the AuthenticationException or IOException of the TLS handshake

Ce que cela signifie

L’enveloppe générique d’HttpClient pour tout échec TLS pendant la connexion. Le message lui-même ne contient aucun diagnostic : la véritable raison se trouve dans InnerException (une AuthenticationException qui nomme le problème de certificat, ou une IOException venant de la couche transport). Journaliser uniquement e.Message la masque ; journalisez toute la chaîne d’exceptions.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Journaliser toute la chaîne d’exceptions

    Parcourez InnerException (ou journalisez l’objet exception, pas seulement Message) pour voir la véritable cause.

    csharp
    catch (HttpRequestException e)
    {
        for (Exception? ex = e; ex != null; ex = ex.InnerException)
            logger.LogError("{Type}: {Message}", ex.GetType().FullName, ex.Message);
    }
  2. 2.

    Relier le message interne à sa cause

    Chaque message interne renvoie à un correctif différent ; les entrées associées ci-dessous les traitent un par un.

    text
    Inner exception                                                       -> look at
    "...errors in the certificate chain: UntrustedRoot / PartialChain"    -> trust store, server chain
    "...errors in the certificate chain: NotTimeValid"                    -> dates, clock
    "...validation procedure: RemoteCertificateNameMismatch"              -> host name vs SAN
    "Cannot determine the frame size or a corrupted frame was received."  -> port is not TLS
    "Received an unexpected EOF or 0 bytes from the transport stream."    -> server/proxy closed
    "SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL."            -> protocol/cipher (Linux)

Erreurs associées

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