Heim  >  Artikel  >  Backend-Entwicklung  >  Warum löst meine Go MongoDB-Verbindung einen x509-Zertifikatfehler aus und wie kann ich ihn mithilfe von SANs beheben?

Warum löst meine Go MongoDB-Verbindung einen x509-Zertifikatfehler aus und wie kann ich ihn mithilfe von SANs beheben?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 12:33:03595Durchsuche

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

Den x509-Zertifikatfehler verstehen

Beim Herstellen einer Verbindung zu einem MongoDB-Server über Go kann aufgrund von Problemen bei der Zertifikatsvalidierung ein Fehler auftreten. Dieser Fehler wird verursacht, wenn das für die TLS-Authentifizierung verwendete x509-Zertifikat auf dem alten Common Name (CN)-Feld anstelle von Subject Alternative Names (SANs) basiert.

Lösung: Verwendung von SANs in Zertifikaten

Um dieses Problem zu beheben, muss das Zertifikat mit SANs anstelle des CN-Felds neu generiert werden. SANs bieten eine sicherere und flexiblere Möglichkeit, die Domäne oder den Hostnamen des Servers zu identifizieren.

Erstellen eines Zertifikats mit SANs

Verwenden Sie OpenSSL, um eine CSR (Certificate Signing Request) zu generieren. und signieren Sie es mit der Root-CA:

<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>

CA-Konfiguration

Konfigurieren Sie die CA mit den folgenden Optionen:

[ 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

Überprüfen des Zertifikats

Überprüfen Sie das resultierende Serverzertifikat mit OpenSSL:

<code class="sh">openssl x509 -in server.crt -noout -text</code>

Das Zertifikat sollte jetzt einen SAN-Abschnitt enthalten:

X509v3 Subject Alternative Name: 
    DNS:myserver.com

Durch Aktualisierung Wenn Sie die Zertifikate mit SANs verwenden, sollte die TLS-Verbindung nun erfolgreich hergestellt werden, ohne dass die Fehlermeldung im Zusammenhang mit dem alten CN-Feld ausgelöst wird.

Das obige ist der detaillierte Inhalt vonWarum löst meine Go MongoDB-Verbindung einen x509-Zertifikatfehler aus und wie kann ich ihn mithilfe von SANs beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn