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:
Ü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!