Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebt man den Fehler „x509: Zertifikat basiert auf altem Common Name-Feld“ beim Herstellen einer Verbindung zu MongoDB mit Go?

Wie behebt man den Fehler „x509: Zertifikat basiert auf altem Common Name-Feld“ beim Herstellen einer Verbindung zu MongoDB mit Go?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-28 05:51:30820Durchsuche

How to Fix

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:

  1. 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}"
  2. 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}"
  3. Ü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!

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