Heim  >  Artikel  >  Backend-Entwicklung  >  Warum schlägt meine Go-TLS-Verbindung fehl mit „x509: Zertifikat basiert auf altem Common Name-Feld“?

Warum schlägt meine Go-TLS-Verbindung fehl mit „x509: Zertifikat basiert auf altem Common Name-Feld“?

Barbara Streisand
Barbara StreisandOriginal
2024-10-28 02:22:31902Durchsuche

Why Does My Go TLS Connection Fail with

Go-TLS-Verbindung schlägt fehl mit dem Fehler „x509: Zertifikat basiert auf altem Common Name-Feld“

Beim Versuch, eine TLS-Verbindung zu MongoDB herzustellen Bei Verwendung von Go kann der Fehler „Verbindung fehlgeschlagen: x509: Zertifikat basiert auf altem Common Name-Feld“ auftreten. Dieses Problem entsteht durch Zertifikatsvalidierungsprüfungen, die aktualisiert wurden, um Subject Alternative Names (SANs) gegenüber Common Name (CN)-Feldern für die Zertifikatsidentität Vorrang zu geben.

Ursache:

Das für die TLS-Authentifizierung verwendete Zertifikat basiert auf einem alten Common Name-Feld anstelle von SANs, die zur Identifizierung von Hosts als sicherer gelten. Aktuelle Versionen von Go verfügen über strengere Zertifikatvalidierungsprüfungen, die die Verwendung von SANs erzwingen.

Lösung:

Um dieses Problem zu beheben, müssen Sie das Zertifikat selbst korrigieren, indem Sie sicherstellen dass es SANs umfasst. Dazu gehört die Erstellung eines neuen Zertifikats mit den entsprechenden SAN-Feldern oder die Neukonfiguration des vorhandenen Zertifikats, um diese einzuschließen.

Quelle beheben:

  1. Erstellen Sie ein CSR (Certificate Signing Request):Verwenden Sie ein Tool wie OpenSSL, um eine CSR zu erstellen, die SAN-Felder für die gewünschten Hostnamen enthält.
  2. Signieren Sie die CSR mit einer Root-CA:Verwenden Sie die Stammzertifizierungsstelle (CA), die das ursprüngliche Zertifikat ausgestellt hat, um die CSR zu signieren und ein neues Zertifikat mit den enthaltenen SANs zu erstellen.

Überprüfung des neuen Zertifikats:

Bestätigen Sie, dass die SAN-Felder im neu generierten Zertifikat vorhanden sind, indem Sie es mit dem folgenden Befehl überprüfen:

openssl x509 -in server.crt -noout -text

Hinweis:

Sobald Sie ein Zertifikat generiert haben Bei SANs können Sie es mit Ihrem Go-Code verwenden, um eine TLS-Verbindung herzustellen, ohne dass der Fehler „x509: Zertifikat basiert auf dem Legacy-Common-Name-Feld“ auftritt. Möglicherweise müssen Sie die Zertifikatsdateien in Ihrem Go-Code aktualisieren und den Verbindungsvorgang neu starten, um sicherzustellen, dass das neue Zertifikat verwendet wird.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine Go-TLS-Verbindung fehl mit „x509: Zertifikat basiert auf altem Common Name-Feld“?. 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