So senden Sie eine HTTPS-Anfrage mit einem Zertifikat in Go
Das Senden von HTTPS-Anfragen an einen Server, der auf einem anderen Port läuft, kommt häufig vor auf zertifikatsbezogene Fehler stoßen. Dies liegt daran, dass das Serverzertifikat von einer unbekannten Autorität signiert ist und der Standard-HTTP-Client selbstsignierten Zertifikaten nicht vertraut.
Um dieses Problem zu beheben, müssen wir das Serverzertifikat manuell mithilfe des entsprechenden CA-Zertifikats überprüfen . Hier ist eine Schritt-für-Schritt-Anleitung, wie Sie dies in Go erreichen:
Besorgen Sie sich das CA-Zertifikat:
Erstellen Sie einen Zertifikatspool:
TLS-Optionen konfigurieren:
Erstellen Sie einen HTTP-Client mit benutzerdefiniertem Transport:
Beispielcode:
package main import ( "crypto/tls" "crypto/x509" "io/ioutil" "log" "net/http" ) func main() { // Read the CA certificate from file caCert, err := ioutil.ReadFile("rootCA.crt") if err != nil { log.Fatal(err) } // Create a certificate pool and add the CA cert caCertPool := x509.NewCertPool() caCertPool.AppendCertsFromPEM(caCert) // Configure TLS options tlsConfig := &tls.Config{ RootCAs: caCertPool, } // Create an HTTP client with custom transport client := &http.Client{ Transport: &http.Transport{ TLSClientConfig: tlsConfig, }, } // Send an HTTPs request _, err = client.Get("https://secure.domain.com") if err != nil { panic(err) } }
Hinweis:
Wenn Sie kein CA-Zertifikat haben, können Sie ein eigenes erstellen. Anweisungen zum Generieren selbstsignierter Zertifikate finden Sie in externen Ressourcen.
Das obige ist der detaillierte Inhalt vonWie stelle ich HTTPS-Anfragen mit selbstsignierten Zertifikaten in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!