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
Freigeben: 2024-12-11 07:14:12
Original
713 Leute haben es durchsucht

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}
Nach dem Login kopieren

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)
    }
}
Nach dem Login kopieren

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
Nach dem Login kopieren
  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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage