Maison >développement back-end >Golang >Pourquoi mon numéro Go TLS échoue-t-il avec « x509 : le certificat repose sur l'ancien champ Nom commun » ?
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!