Heim >Backend-Entwicklung >Golang >Wie gehe ich mit HTTPS-Anfragen mit benutzerdefinierten oder nicht vertrauenswürdigen Zertifikaten in Go um?

Wie gehe ich mit HTTPS-Anfragen mit benutzerdefinierten oder nicht vertrauenswürdigen Zertifikaten in Go um?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-11 12:05:10654Durchsuche

How to Handle HTTPS Requests with Custom or Untrusted Certificates in Go?

Senden von HTTPS-Anfragen mit Zertifikaten in Go

Bei der Interaktion mit HTTPS-Diensten, die eine Zertifikatsüberprüfung erfordern, können Entwickler auf Fehler im Zusammenhang mit 不知名的 stoßen授权机构. Um dieses Problem zu lösen, bietet Go einen Mechanismus zur Validierung von Serverzertifikaten mithilfe vertrauenswürdiger CA-Zertifikate.

Um das Problem zu lösen, müssen Sie das CA-Zertifikat der vertrauenswürdigen Behörde erhalten, die das Serverzertifikat ausgestellt hat. Sobald Sie das CA-Zertifikat haben, können Sie es wie unten gezeigt zur Transportschicht Ihres HTTP-Clients hinzufügen:

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)
    }
}

Zusätzlich können Sie ein benutzerdefiniertes CA-Zertifikat generieren und Ihre eigenen Zertifikate für eine sichere Kommunikation signieren. Die folgenden Schritte beschreiben, wie Sie Ihre eigene Zertifizierungsstelle und Ihr eigenes Zertifikat für eine bestimmte Domäne erstellen:

  1. CA generieren:

    openssl genrsa -out rootCA.key 4096
    openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
  2. Zertifikat erstellen für Domäne:

    openssl genrsa -out secure.domain.com.key 2048
    openssl req -new -key secure.domain.com.key -out secure.domain.com.csr
    openssl x509 -req -in secure.domain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -days 365 -out secure.domain.com.crt

Durch Befolgen dieser Schritte können Sie Serverzertifikate überprüfen und sichere HTTPS-Verbindungen in Ihren Go-Anwendungen herstellen.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit HTTPS-Anfragen mit benutzerdefinierten oder nicht vertrauenswürdigen Zertifikaten in Go um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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