Heim >Backend-Entwicklung >Golang >Wie behebt man den Fehler „x509: Zertifikat basiert auf altem Common Name-Feld' beim Herstellen einer Verbindung zu MongoDB mit Go?
Fehler: Beim Herstellen einer Verbindung zum Server mit dem Feld „Legacy Common Name“
Beim Versuch, mit Go eine Verbindung zu einem MongoDB-Server herzustellen, kann Folgendes auftreten: der Fehler:
failed to connect: x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0
Dieser Fehler weist darauf hin, dass das für die TLS-Authentifizierung verwendete Zertifikat ein Common Name (CN)-Feld enthält, aber die erforderlichen Subject Alternative Name (SAN)-Felder fehlen. Die TLS-Implementierung von Go ist in den letzten Versionen strenger geworden und bevorzugt jetzt SANs gegenüber CNs für die Host-Verifizierung.
Grundursache:
Die Grundursache dieses Fehlers liegt in die Fehlkonfiguration des SSL-Zertifikats, das für die TLS-Authentifizierung verwendet wird. Das Zertifikat sollte über ein DNS-SAN-Feld verfügen, das mit dem Hostnamen oder der IP-Adresse des MongoDB-Servers übereinstimmt.
Lösung:
Um diesen Fehler zu beheben, müssen Sie das SSL neu generieren Zertifikat mit einem DNS-SAN-Feld. Dies kann mit den folgenden Schritten erreicht werden:
Erstellen Sie eine CSR (Certificate Signing Request):
openssl req -new \ -subj "${SUBJ_PREFIX}/CN=${DNS}/emailAddress=${EMAIL}" \ -key "${KEY}" \ -addext "subjectAltName = DNS:${DNS}" \ -out "${CSR}"
Signieren Sie die CSR mit Ihrer Stammzertifizierungsstelle:
openssl ca \ -create_serial \ -cert "${ROOT_CRT}" \ -keyfile "${ROOT_KEY}" \ -days "${CERT_LIFETIME}" \ -in "${CSR}" \ -batch \ -config "${CA_CONF}" \ -out "${CRT}"
Überprüfen Sie das resultierende Zertifikat:
openssl x509 -in server.crt -noout -text
Sie sollten jetzt über ein Zertifikat mit einem SAN-Abschnitt wie:
X509v3 Subject Alternative Name: DNS:myserver.com
Sobald Sie das Zertifikat neu generiert haben, können Sie es verwenden, um eine sichere Verbindung zum MongoDB-Server herzustellen, ohne auf das zu stoßen Häufiger Namensfehler.
Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „x509: Zertifikat basiert auf altem Common Name-Feld' beim Herstellen einer Verbindung zu MongoDB mit Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!