Heim >Backend-Entwicklung >Golang >Warum schlägt meine Go-TLS-Einwahl fehl, wenn „x509: Zertifikat auf altem Common Name-Feld basiert'?
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!