Heim > Artikel > Backend-Entwicklung > Warum löst meine Go MongoDB-Verbindung einen x509-Zertifikatfehler aus und wie kann ich ihn mithilfe von SANs beheben?
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 = "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
Ü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!