Zum Inhalt springen
ecdsa.com
.NET SslStream / HttpClient.NET

Fehlermeldung

The remote certificate is invalid according to the validation procedure: RemoteCertificateNameMismatch

Auch ausgegeben als

  • The remote certificate is invalid according to the validation procedure.

Ältere .NET-Versionen gaben nur „The remote certificate is invalid according to the validation procedure.“ aus, ohne den Fehler zu nennen; aktuelles .NET hängt den Wert von SslPolicyErrors an. HttpClient verpackt den Fehler in „The SSL connection could not be established, see inner exception.“

.NET SslStream / HttpClient — SslPolicyErrors.RemoteCertificateNameMismatch

Was der Fehler bedeutet

Die Zertifikatskette des Servers ist vertrauenswürdig, aber der Hostname, mit dem sich .NET verbunden hat, gehört nicht zu den Namen, für die das Zertifikat ausgestellt wurde (seinen Subject Alternative Names). Der Text „according to the validation procedure“ steht bei SslPolicyErrors wie Namensabweichungen, im Gegensatz zu „errors in the certificate chain“ bei Problemen mit Vertrauen und Datum.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Namen im Zertifikat mit der URL vergleichen

    Gib die SAN-Liste des ausgelieferten Zertifikats aus.

    bash
    echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \
      | openssl x509 -noout -subject -ext subjectAltName
  2. 2.

    Mit einem Namen aus dem Zertifikat verbinden

    Ändere die URL und die Namensauflösung, statt die Validierung abzuschalten.

    csharp
    // Use a host name from the certificate in the URL (resolve it to the address you need via DNS)
    using var client = new HttpClient();
    var response = await client.GetAsync("https://www.example.com/health");
  3. 3.

    SQL Server: HostNameInCertificate setzen

    Microsoft.Data.SqlClient ab 5.0 akzeptiert HostNameInCertificate, sodass du dich per Adresse verbinden und trotzdem den echten Namen des Zertifikats validieren kannst; TrustServerCertificate=True überspringt dagegen jede Validierung und sollte außerhalb von Wegwerfumgebungen nicht verwendet werden.

    text
    # Microsoft.Data.SqlClient: connect by IP/alias but validate against the certificate's name
    Server=10.0.0.5;Database=app;Encrypt=True;HostNameInCertificate=sql01.corp.example.com;

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen