Heim >Backend-Entwicklung >Golang >Wie kann ich Serverzertifikate in HTTPS-Anfragen mit Go überprüfen?

Wie kann ich Serverzertifikate in HTTPS-Anfragen mit Go überprüfen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-11 07:14:12714Durchsuche

How Can I Verify Server Certificates in HTTPS Requests Using Go?

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:

  1. Generieren CA:
openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
  1. Generieren Sie ein von Ihrer CA signiertes Zertifikat für Ihre Domain:
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!

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