"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-12-21
Parcourir:364

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 problème, mettez à jour la chaîne de connexion client pour inclure les éléments suivants paramètres :

  • 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 nom d'hôte du serveur. certificate.

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 le 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3