Maison > développement back-end > Golang > le corps du texte

Pourquoi ma connexion Go MongoDB génère-t-elle une erreur de certificat x509 et comment puis-je la corriger à l'aide des SAN ?

Barbara Streisand
Libérer: 2024-10-30 12:33:03
original
611 Les gens l'ont consulté

Why is my Go MongoDB connection throwing a x509 certificate error, and how can I fix it using SANs?

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>
Copier après la connexion

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               = &quot;generated by https://github.com/me/my-pki&quot;
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
Copier après la connexion

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>
Copier après la connexion

Le certificat doit maintenant inclure une section SAN :

X509v3 Subject Alternative Name: 
    DNS:myserver.com
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!