Heim > Backend-Entwicklung > Golang > Warum schlägt meine TLS-Verbindung mit einem selbstsignierten Zertifikat fehl und wie kann ich das Problem beheben?

Warum schlägt meine TLS-Verbindung mit einem selbstsignierten Zertifikat fehl und wie kann ich das Problem beheben?

Mary-Kate Olsen
Freigeben: 2024-12-19 15:58:17
Original
750 Leute haben es durchsucht

Why Does My TLS Connection Fail with a Self-Signed Certificate and How Can I Fix It?

Fehlerbehebung bei TLS-Verbindungen mit selbstsignierten Zertifikaten

Problem: Aufbau einer TLS-Verbindung über einen selbstsignierten Server Das Zertifikat schlägt mit einem Fehler fehl, der auf ein unbekanntes Zertifikat hinweist Autorität.

Relevanter Code:
Client:

CA_Pool := x509.NewCertPool()
severCert, err := ioutil.ReadFile("./cert.pem")
CA_Pool.AppendCertsFromPEM(severCert)

config := tls.Config{RootCAs: CA_Pool}
Nach dem Login kopieren

Server:

cert, err := tls.LoadX509KeyPair("./cert.pem", "./key.pem")
config := tls.Config{Certificates: []tls.Certificate{cert}}
Nach dem Login kopieren

Fehler Nachricht:

client: dial: x509: certificate signed by unknown authority 
(possibly because of "x509: invalid signature: parent certificate
cannot sign this kind of certificate" while trying to verify 
candidate authority certificate "serial:0")
Nach dem Login kopieren

Ursache:
Für das generierte selbstsignierte Zertifikat ist das IsCA-Flag nicht gesetzt, was darauf hinweist, dass es sich nicht um ein Zwischen- oder Stammzertifikat handelt . Folglich ist der CA-Pool des Clients nicht in der Lage, das selbstsignierte Zertifikat als gültige Autorität zu überprüfen.

Lösung:
Um dieses Problem zu beheben, stellen Sie sicher, dass das IsCA-Flag aktiviert ist Wird beim Generieren des selbstsignierten Zertifikats mit x509.CreateCertificate festgelegt. Der korrekte Code für die Zertifikatsgenerierung lautet wie folgt:

certTemplate := &x509.Certificate{
    IsCA: true,
    KeyUsage: x509.KeyUsageCertSign,
    // ... other certificate parameters
}
Nach dem Login kopieren

Durch die Einstellung von IsCA:true kann das selbstsignierte Zertifikat ordnungsgemäß als Zertifizierungsstelle fungieren, sodass der Client seine Authentizität überprüfen kann.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine TLS-Verbindung mit einem selbstsignierten Zertifikat fehl und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage