Comprendre l'erreur de certificat x509
Lors de la connexion à un serveur MongoDB à l'aide de Go, une erreur peut se produire en raison de problèmes de validation de certificat. Cette erreur se produit lorsque le certificat x509 utilisé pour l'authentification TLS s'appuie sur l'ancien champ Common Name (CN) au lieu des noms alternatifs du sujet (SAN).
Solution : Utilisation de SAN dans les certificats
Pour résoudre ce problème, le certificat doit être régénéré avec les SAN au lieu du champ CN. Les SAN offrent un moyen plus sécurisé et flexible d'identifier le domaine ou le nom d'hôte du serveur.
Générer un certificat avec les SAN
Utilisez OpenSSL pour générer une CSR (demande de signature de certificat) et signez-le avec l'autorité de certification racine :
<code class="sh">openssl req -new \ -subj "${SUBJ_PREFIX}/CN=${DNS}/emailAddress=${EMAIL}" \ -key "${KEY}" \ -addext "subjectAltName = DNS:${DNS}" \ -out "${CSR}" openssl ca \ -create_serial \ -cert "${ROOT_CRT}" \ -keyfile "${ROOT_KEY}" \ -days "${CERT_LIFETIME}" \ -in "${CSR}" \ -batch \ -config "${CA_CONF}" \ -out "${CRT}"</code>
Configuration de l'autorité de certification
Configurez l'autorité de certification avec les options suivantes :
[ ca ] default_ca = my_ca [ my_ca ] ... copy_extensions = copy [ my_cert ] basicConstraints = CA:FALSE nsComment = "generated by https://github.com/me/my-pki" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer [ policy_match ] # ensure CSR fields match that of delivered Cert countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional
Vérification du certificat
Inspectez le certificat de serveur obtenu à l'aide d'OpenSSL :
<code class="sh">openssl x509 -in server.crt -noout -text</code>
Le certificat doit maintenant inclure une section SAN :
X509v3 Subject Alternative Name: DNS:myserver.com
En mettant à jour les certificats avec les SAN, la connexion TLS devrait maintenant s'établir avec succès sans déclencher le message d'erreur lié au champ CN hérité.
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!