Heim > Backend-Entwicklung > Golang > Wie überprüft man HTTPS-Zertifikate in Golang, wenn SSL-Fehler auftreten?

Wie überprüft man HTTPS-Zertifikate in Golang, wenn SSL-Fehler auftreten?

Patricia Arquette
Freigeben: 2024-12-07 22:38:16
Original
355 Leute haben es durchsucht

How to Verify HTTPS Certificates in Golang When Encountering SSL Errors?

Überprüfen des HTTPS-Zertifikats mit Golang

Wenn Sie HTTPS-Anfragen an Server mit benutzerdefinierten Zertifikaten stellen, ist es wichtig, deren Authentizität zu überprüfen, um eine sichere Kommunikation zu gewährleisten.

In einem solchen Szenario stieß eine Anwendung, die auf einem separaten Port ausgeführt wurde, auf einen SSL-Fehler, als sie versuchte, auf eine auf HTTPS gehostete REST-API zuzugreifen. Die Ursache dieses Fehlers war eine nicht erkannte Zertifizierungsstelle.

Um dieses Problem zu beheben, ist das Hinzufügen der Zertifizierungsstelle zum Transport bei HTTPS-Anfragen von entscheidender Bedeutung. Das folgende Code-Snippet zeigt, wie dies erreicht wird:

package main

import (
    "crypto/tls"
    "io/ioutil"
    "log"
    "net/http"
    "crypto/x509"
)

func main() {
    // Read the root CA certificate from file
    caCert, err := ioutil.ReadFile("rootCA.crt")
    if err != nil {
        log.Fatal(err)
    }

    // Create an X.509 certificate pool and add the CA certificate
    caCertPool := x509.NewCertPool()
    caCertPool.AppendCertsFromPEM(caCert)

    // Configure the TLS client to trust the CA
    tlsConfig := &tls.Config{
        RootCAs: caCertPool,
    }

    // Create a new HTTP client with the modified TLS configuration
    client := &http.Client{
        Transport: &http.Transport{
            TLSClientConfig: tlsConfig,
        },
    }

    // Make an HTTPS request using the client
    _, err = client.Get("https://secure.domain.com")
    if err != nil {
        panic(err)
    }
}
Nach dem Login kopieren

Alternativ, wenn kein bereits vorhandenes CA-Zertifikat verfügbar ist, schlägt die Lösung vor, eine eigene CA zu erstellen und von dieser CA signierte Zertifikate auszustellen. Die folgenden Befehle bieten eine schrittweise Vorgehensweise:

CA generieren:

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
Nach dem Login kopieren

Zertifikat für secure.domain.com generieren, signiert von CA :

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

Das obige ist der detaillierte Inhalt vonWie überprüft man HTTPS-Zertifikate in Golang, wenn SSL-Fehler auftreten?. 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