Heim >Backend-Entwicklung >Golang >Wie behebe ich den Fehler „x509: Zertifikat von unbekannter Stelle signiert' bei der Verwendung selbstsignierter TLS-Zertifikate?
Beim Aufbau einer TLS-Verbindung mit einem selbstsignierten Serverzertifikat stoßen Benutzer häufig auf das „x509: Zertifikat signiert von“. Fehler „Unbekannte Autorität“. Dieses Problem tritt auf, wenn der Client das selbstsignierte Zertifikat nicht als vertrauenswürdige Autorität erkennt.
Um diesen Fehler zu beheben, liegt das Problem im Prozess der Zertifikatserstellung. Der bereitgestellte Codeausschnitt erstellt ein selbstsigniertes Zertifikat, vernachlässigt jedoch das Setzen des Flags „IsCA:true“. Dieses Flag weist das Zertifikat als Zertifizierungsstelle (Certification Authority, CA) aus und ermöglicht es ihm, andere Zertifikate zu signieren.
Der korrigierte Code sollte wie folgt aussehen:
Generieren des Zertifikats:
func generateCertificate() { key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) if err != nil { log.Fatal(err) } subject := x509.Certificate{ SerialNumber: big.NewInt(42), Subject: pkix.Name{ Organization: []string{"My Organization"}, }, } template := x509.Certificate{ SerialNumber: big.NewInt(43), Subject: subject.Subject, KeyUsage: x509.KeyUsageCertSign, IsCA: true, // Setting IsCA to true designates the certificate as a CA ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, } cert, err := x509.CreateCertificate(rand.Reader, &template, &template, &key.PublicKey, key) if err != nil { log.Fatal(err) } // Save the certificate and key to pem files }
Kunde Konfiguration:
func clientSetup() (*tls.Config, error) { cert, err := ioutil.ReadFile("./cert.pem") if err != nil { return nil, err } certpool := x509.NewCertPool() certpool.AppendCertsFromPEM(cert) config := &tls.Config{ RootCAs: certpool, InsecureSkipVerify: true, //!!! Skip certificate verification for testing purposes only } return config, nil }
Hinweis: Für Produktionsumgebungen sollte die Zertifikatsüberprüfung aktiviert sein, um die Authentizität des Servers sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „x509: Zertifikat von unbekannter Stelle signiert' bei der Verwendung selbstsignierter TLS-Zertifikate?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!