Serverzertifikate in HTTPS-Anfragen mit Golang überprüfen
Beim Zugriff auf HTTPS-Websites oder -Dienste kann Ihre Anwendung auf SSL-Zertifikatfehler stoßen, wenn Ihr lokales Vertrauen besteht Der Speicher enthält nicht die Zertifizierungsstelle (CA), die das Zertifikat des Servers ausgestellt hat. Wenn Sie sichere HTTPS-Verbindungen herstellen möchten, ohne die Zertifikatsüberprüfung zu ignorieren, bietet dieser Artikel eine Lösung mithilfe der HTTP-Client-Bibliothek von Go.
Um die Zertifikatsüberprüfung zu ignorieren und die Zertifikatsüberprüfung zu deaktivieren, können Sie den folgenden Codeausschnitt verwenden:
tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } client := &http.Client{Transport: tr}
Dieser Ansatz wird jedoch nicht für Produktionsumgebungen empfohlen, da er ein Sicherheitsrisiko darstellen kann.
Server überprüfen Zertifikate
Um Serverzertifikate zu überprüfen, müssen Sie das CA-Zertifikat zu Ihrer Transportkonfiguration hinzufügen. Unten finden Sie ein Beispiel:
package main import ( "crypto/tls" "io/ioutil" "log" "net/http" "crypto/x509" ) func main() { caCert, err := ioutil.ReadFile("rootCA.crt") if err != nil { log.Fatal(err) } caCertPool := x509.NewCertPool() caCertPool.AppendCertsFromPEM(caCert) client := &http.Client{ Transport: &http.Transport{ TLSClientConfig: &tls.Config{ RootCAs: caCertPool, }, }, } _, err := client.Get("https://secure.domain.com") if err != nil { panic(err) } }
Zertifikate für Ihren Server generieren
Wenn Sie kein CA-Zertifikat haben, können Sie eines zusammen mit einem Zertifikat für Ihren Server erstellen Server mit den folgenden Befehlen:
openssl genrsa -out rootCA.key 4096 openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
openssl genrsa -out secure.domain.com.key 2048 openssl req -new -key secure.domain.com.key -out secure.domain.com.csr # In answer to question `Common Name (e.g. server FQDN or YOUR name) []:` you should set `secure.domain.com` (your real domain name) openssl x509 -req -in secure.domain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -days 365 -out secure.domain.com.crt
Wenn Sie diese Schritte ausführen, erhalten Sie ein ordnungsgemäßes Zertifikat konfigurierter HTTP-Client, der Serverzertifikate in Go überprüft. Dies gewährleistet eine sichere HTTPS-Kommunikation mit dem angegebenen Server.
Das obige ist der detaillierte Inhalt vonWie kann ich Serverzertifikate in HTTPS-Anfragen mit Go überprüfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!