Maison  >  Article  >  développement back-end  >  Pourquoi est-ce que je reçois une erreur TLS Handshake après la mise à niveau de ma base de données Azure SQL vers la version 12 ?

Pourquoi est-ce que je reçois une erreur TLS Handshake après la mise à niveau de ma base de données Azure SQL vers la version 12 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-27 07:29:03748parcourir

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

Erreur de prise de contact TLS Azure SQL Database après la mise à niveau de la version 12

Vous pouvez rencontrer une erreur de prise de contact TLS après la mise à niveau d'une instance de base de données Azure SQL vers la version 12 . Cette erreur se produit lorsque le certificat présenté par le serveur ne correspond pas au nom d'hôte spécifié dans la chaîne de connexion du client.

Détails de l'erreur

Le message d'erreur indique généralement que le Le certificat est valide pour un nom d'hôte autre que celui utilisé dans la connexion client. Par exemple :

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

Solution

Pour résoudre ce problème, mettez à jour la chaîne de connexion client pour inclure les paramètres suivants :

  • TrustServerCertificate=True : Ce paramètre indique au client de faire confiance au certificat du serveur, même s'il ne correspond pas au nom d'hôte.
  • hostNameInCertificate=*.database.windows.net : Ce paramètre spécifie le nom d'hôte qui doit être présent dans le certificat du serveur.

Chaîne de connexion mise à jour

La chaîne de connexion mise à jour devrait ressembler à ceci :

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;

Explication

Dans les versions précédentes d'Azure SQL Database, le certificat du serveur correspondait toujours au nom d'hôte spécifié dans la chaîne de connexion client. Cependant, dans la v12, cela n'est plus garanti. En définissant TrustServerCertificate sur True et en spécifiant le nom d'hôte correct dans hostNameInCertificate, vous pouvez demander au client d'accepter le certificat et d'établir la connexion correctement.

Remarque :

Bien que le Le portail Azure suggère de définir TrustServerCertificate sur False, cela peut entraîner des erreurs TLS Handshake dans certains cas. Si vous rencontrez ces erreurs, définir TrustServerCertificate sur True et ajouter hostNameInCertificate à la chaîne de connexion devrait résoudre le problème.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn