Heim  >  Artikel  >  Backend-Entwicklung  >  Warum erhalte ich nach dem Upgrade meiner Azure SQL-Datenbank auf v12 einen TLS-Handshake-Fehler?

Warum erhalte ich nach dem Upgrade meiner Azure SQL-Datenbank auf v12 einen TLS-Handshake-Fehler?

Linda Hamilton
Linda HamiltonOriginal
2024-10-27 07:29:03748Durchsuche

Why am I getting a TLS Handshake error after upgrading my Azure SQL Database to v12?

TLS-Handshake-Fehler der Azure SQL-Datenbank nach dem Upgrade auf v12

Nach dem Upgrade einer Azure SQL-Datenbankinstanz auf v12 kann ein TLS-Handshake-Fehler auftreten . Dieser Fehler tritt auf, wenn das vom Server vorgelegte Zertifikat nicht mit dem in der Verbindungszeichenfolge des Clients angegebenen Hostnamen übereinstimmt.

Fehlerdetails

Die Fehlermeldung weist normalerweise darauf hin, dass die Das Zertifikat ist für einen anderen Hostnamen als den in der Clientverbindung verwendeten gültig. Beispiel:

TLS Handshake failed: x509: certificate is valid for
tr12.northcentralus1-a.worker.database.windows.net,
*.tr12.northcentralus1-a.worker.database.windows.net, not [server-name].database.windows.net

Lösung

Um dieses Problem zu beheben, aktualisieren Sie die Client-Verbindungszeichenfolge so, dass sie die folgenden Parameter enthält:

  • TrustServerCertificate=True: Dieser Parameter weist den Client an, dem Zertifikat des Servers zu vertrauen, auch wenn es nicht mit dem Hostnamen übereinstimmt.
  • hostNameInCertificate=*.database.windows.net: Dieser Parameter gibt den Hostnamen an, der im Zertifikat des Servers vorhanden sein soll.

Aktualisierte Verbindungszeichenfolge

Die aktualisierte Verbindungszeichenfolge sollte in etwa so aussehen :

Server=[server-name].database.windows.net;Port=1433;Database=[dbname];User
ID=[user];Password=[pass];Trusted_Connection=False;Encrypt=True;Connection
Timeout=30;TrustServerCertificate=True;hostNameInCertificate=*.database.windows.net;

Erklärung

In früheren Versionen der Azure SQL-Datenbank stimmte das Zertifikat des Servers immer mit dem in der Clientverbindungszeichenfolge angegebenen Hostnamen überein. In Version 12 ist dies jedoch nicht mehr gewährleistet. Indem Sie TrustServerCertificate auf True setzen und den richtigen Hostnamen in hostNameInCertificate angeben, können Sie den Client anweisen, das Zertifikat zu akzeptieren und die Verbindung ordnungsgemäß herzustellen.

Hinweis:

Obwohl die Das Azure-Portal empfiehlt, TrustServerCertificate auf „False“ zu setzen. Dies kann in einigen Fällen zu TLS-Handshake-Fehlern führen. Wenn diese Fehler auftreten, sollte das Problem behoben werden, indem Sie TrustServerCertificate auf True setzen und hostNameInCertificate zur Verbindungszeichenfolge hinzufügen.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich nach dem Upgrade meiner Azure SQL-Datenbank auf v12 einen TLS-Handshake-Fehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn