Maison  >  Article  >  développement back-end  >  Pourquoi mon numéro Go TLS échoue-t-il avec « x509 : le certificat repose sur l'ancien champ Nom commun » ?

Pourquoi mon numéro Go TLS échoue-t-il avec « x509 : le certificat repose sur l'ancien champ Nom commun » ?

DDD
DDDoriginal
2024-10-28 08:13:02674parcourir

 Why Does My Go TLS Dial Fail with

Go TLS Dial : échec de la connexion avec le certificat X509 reposant sur le champ de nom commun hérité

Ce problème survient lors de la tentative de connexion à un serveur en utilisant TLS dans Golang, et le certificat du serveur s'appuie sur l'ancien champ Common Name (CN) pour l'identification. La bibliothèque Golang standard vérifie à la place les noms alternatifs du sujet (SAN).

Cause :

Par défaut, le runtime Golang vérifie que les certificats de serveur présentent des SAN, selon les meilleurs pratiques de sécurité. Si un certificat ne dispose pas de SAN et s'appuie à la place sur le champ CN pour l'identification, le runtime Go rejette la connexion, affichant le message d'erreur :

failed to connect: x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0

Résolution :

Pour résoudre ce problème, vous avez deux options :

1. Modifiez le certificat de serveur pour utiliser les SAN :

Régénérez le certificat de serveur pour inclure les SAN correspondant au nom d'hôte ou à l'adresse IP que le client utilisera pour se connecter. Cela implique l'utilisation d'autorités de certification (CA) et de commandes OpenSSL pour créer un certificat avec les SAN appropriés.

2. Désactiver temporairement la correspondance CN :

Vous pouvez temporairement désactiver la vérification des SAN par le runtime Go en définissant la variable d'environnement GODEBUG comme ceci :

GODEBUG=x509ignoreCN=0 go run your_program.go

Remarque : La désactivation de la correspondance CN n'est pas une solution recommandée, car elle réduit la sécurité de votre connexion TLS en autorisant l'acceptation des certificats avec CN mais sans SAN.

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