Saltar al contenido
ecdsa.com
.NET HttpClient.NET

Mensaje de error

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

También se muestra como

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

El texto es estable desde .NET Core 3.x hasta .NET 10. Los frameworks (Refit, gRPC, los SDK de Azure) pueden envolverlo una vez más, así que la excepción interna puede estar 2 o 3 niveles más abajo.

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

Qué significa

Es el envoltorio genérico de HttpClient para cualquier fallo de TLS durante la conexión. El mensaje en sí no aporta ningún diagnóstico: el motivo real está en InnerException (una AuthenticationException que indica el problema del certificado, o una IOException del transporte). Registrar solo e.Message lo oculta; registra toda la cadena de excepciones.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Registrar la cadena de excepciones completa

    Recorre InnerException (o registra el objeto de la excepción, no solo Message) para ver la causa real.

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

    Relacionar el mensaje interno con su causa

    Cada mensaje interno apunta a una solución distinta; las entradas relacionadas de abajo las tratan una por una.

    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)

Errores relacionados

Explorar toda la base de datos de errores de firma