Maison >développement back-end >Golang >Comment corriger l'erreur « x509 : le certificat repose sur le champ de nom commun hérité » lors de la connexion à MongoDB avec Go ?
Erreur : connexion au serveur avec le champ de nom commun hérité
Lorsque vous essayez d'établir une connexion à un serveur MongoDB à l'aide de Go, vous pouvez rencontrer l'erreur :
failed to connect: x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0
Cette erreur indique que le certificat utilisé pour l'authentification TLS contient un champ Nom commun (CN) mais ne dispose pas des champs Nom alternatif du sujet (SAN) nécessaires. L'implémentation TLS de Go est devenue plus stricte dans les versions récentes et favorise désormais les SAN par rapport aux CN pour la vérification de l'hôte.
Cause première :
La cause première de cette erreur réside dans la mauvaise configuration du certificat SSL utilisé pour l'authentification TLS. Le certificat doit avoir un champ DNS SAN correspondant au nom d'hôte ou à l'adresse IP du serveur MongoDB.
Solution :
Pour résoudre cette erreur, vous devez régénérer le SSL certificat avec un champ DNS SAN. Ceci peut être réalisé en suivant les étapes suivantes :
Créer une CSR (demande de signature de certificat) :
openssl req -new \ -subj "${SUBJ_PREFIX}/CN=${DNS}/emailAddress=${EMAIL}" \ -key "${KEY}" \ -addext "subjectAltName = DNS:${DNS}" \ -out "${CSR}"
Signez le CSR avec votre autorité de certification racine :
openssl ca \ -create_serial \ -cert "${ROOT_CRT}" \ -keyfile "${ROOT_KEY}" \ -days "${CERT_LIFETIME}" \ -in "${CSR}" \ -batch \ -config "${CA_CONF}" \ -out "${CRT}"
Inspectez le certificat obtenu :
openssl x509 -in server.crt -noout -text
Vous devriez maintenant avoir un certificat avec une section SAN comme :
X509v3 Subject Alternative Name: DNS:myserver.com
Une fois que vous avez régénéré le certificat, vous pouvez l'utiliser pour établir une connexion sécurisée au serveur MongoDB sans rencontrer le Erreur de nom commun.
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!