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

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

DDD
DDDOriginal
2024-10-28 08:13:02674Durchsuche

 Why Does My Go TLS Dial Fail with

Go TLS Dial: Verbindung mit X509-Zertifikat fehlgeschlagen, das auf dem Feld „Legacy Common Name“ basiert

Dieses Problem tritt auf, wenn versucht wird, eine Verbindung zu einem Server herzustellen unter Verwendung von TLS in Golang, und das Zertifikat des Servers stützt sich zur Identifizierung auf das alte Common Name (CN)-Feld. Stattdessen prüft die standardmäßige Golang-Bibliothek, ob Subject Alternative Names (SANs) vorhanden sind.

Ursache:

Standardmäßig überprüft die Golang-Laufzeitumgebung, ob Serverzertifikate SANs darstellen, wie es am besten ist Sicherheitspraktiken. Wenn einem Zertifikat SANs fehlen und es sich stattdessen auf das CN-Feld zur Identifizierung verlässt, lehnt die Go-Laufzeit die Verbindung ab und zeigt die Fehlermeldung an:

failed to connect: x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0

Lösung:

Um dieses Problem zu beheben, haben Sie zwei Möglichkeiten:

1. Ändern Sie das Serverzertifikat, um SANs zu verwenden:

Generieren Sie das Serverzertifikat neu, um SANs einzuschließen, die dem Hostnamen oder der IP-Adresse entsprechen, die der Client für die Verbindung verwendet. Dies beinhaltet die Verwendung von Zertifizierungsstellen (CAs) und OpenSSL-Befehlen, um ein Zertifikat mit entsprechenden SANs zu erstellen.

2. CN-Matching vorübergehend deaktivieren:

Sie können die Prüfung der Go-Laufzeit auf SANs vorübergehend deaktivieren, indem Sie die Umgebungsvariable GODEBUG wie folgt festlegen:

GODEBUG=x509ignoreCN=0 go run your_program.go

Hinweis: Das Deaktivieren des CN-Abgleichs ist keine empfohlene Lösung, da es die Sicherheit Ihrer TLS-Verbindung verringert, indem Zertifikate mit CNs, aber ohne SANs akzeptiert werden.

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