Heim > Backend-Entwicklung > Golang > Golang-Installationszertifikat

Golang-Installationszertifikat

PHPz
Freigeben: 2023-05-22 16:38:07
Original
957 Leute haben es durchsucht

Wenn Sie Golang zum Senden von HTTPS-Anfragen verwenden, müssen Sie ein SSL-Zertifikat installieren. Andernfalls tritt ein Fehler ähnlich dem folgenden auf:

x509: certificate signed by unknown authority
Nach dem Login kopieren

In Golang wird das Paket net/http in der Standardbibliothek verwendet, um HTTP(S)-Anfragen zu stellen. Das Standardverhalten dieses Pakets besteht darin, das Zertifikat des Servers zu überprüfen. Wenn das Zertifikat des Servers nicht in der integrierten Liste der vertrauenswürdigen Zertifikate von Golang enthalten ist, meldet Golang den oben genannten Fehler.

Um dieses Problem zu lösen, müssen wir das Serverzertifikat installieren.

1. Laden Sie das Zertifikat herunter

Verwenden Sie den Befehl openssl, um das Zertifikat wie folgt vom Remote-Server herunterzuladen:

openssl s_client -connect example.com:443 < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > example.com.crt
Nach dem Login kopieren

Unter anderem Beispiel .com ist das Zertifikat, das heruntergeladen werden muss. Dieser Befehl lädt das Zertifikat von Port 443 von example.com herunter und speichert es als example.com.crt-Datei.

2. Installieren Sie das Zertifikat

Fügen Sie das heruntergeladene Zertifikat zur Liste der vertrauenswürdigen Zertifikate von Golang hinzu. Es gibt zwei Methoden:

2.1 Methode 1: Hinzufügen der Systemzertifikatspeicher

Fügen Sie das Zertifikat zum Systemzertifikatspeicher hinzu und lassen Sie es von Golang automatisch erkennen.

Am Beispiel von Ubuntu kopieren Sie das Zertifikat in den CA-Speicherort des Systems:

sudo cp example.com.crt /usr/local/share/ca-certificates/
Nach dem Login kopieren

Aktualisieren Sie dann das Zertifikat:

sudo update-ca-certificates
Nach dem Login kopieren

2.2 Methode 2 : Fügen Sie das Zertifikat manuell zum integrierten Zertifikatsspeicher von Golang hinzu

Fügen Sie das Zertifikat zum Stammzertifikatspool des integrierten Zertifikatsspeichers von Golang hinzu. Dies kann auf folgende Weise erreicht werden.

package main
 
import (
    "crypto/tls"
    "crypto/x509"
    "io/ioutil"
    "fmt"
    "net/http"
)
 
func main() {
    // 从文件载入证书
    cert, err := ioutil.ReadFile("example.com.crt")
    if err != nil {
        fmt.Println(err)
        return
    }
 
    pool := x509.NewCertPool()
 
    // 将证书添加到根证书池中
    if ok := pool.AppendCertsFromPEM(cert); !ok {
        fmt.Println("Failed to parse root certificate")
        return
    }
 
    tr := &http.Transport{
        TLSClientConfig: &tls.Config{
            RootCAs: pool,
        },
    }
 
    client := &http.Client{Transport: tr}
 
    _, err = client.Get("https://example.com")
    if err != nil {
        fmt.Println(err)
        return
    }
 
    fmt.Println("Success")
}
Nach dem Login kopieren

Dieses Programm lädt die Datei example.com.crt und fügt sie dem Stammzertifikatspool hinzu. Dieses Zertifikat wird dann für den Zugriff auf die Website example.com verwendet. Wenn das Zertifikat erfolgreich geladen wurde, wird „Success“ ausgegeben.

3. Überprüfen Sie, ob das Zertifikat erfolgreich installiert wurde.

Führen Sie den folgenden Code aus:

package main
 
import (
    "crypto/tls"
    "fmt"
    "net/http"
)
 
func main() {
    resp, err := http.Get("https://example.com")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
    fmt.Println(resp.Status)
}
Nach dem Login kopieren

Wenn der Rückgabestatuscode 200 ist, bedeutet dies, dass Das Zertifikat wurde erfolgreich installiert. Andernfalls müssen möglicherweise andere Probleme wie Zertifikate oder Netzwerk überprüft werden.

Oben erfahren Sie, wie Sie ein SSL-Zertifikat in Golang installieren. In der Praxis ist Methode 1 häufiger anzutreffen, da in der Regel ein Systemadministrator für die Pflege der Systemzertifikatsdatenbank verantwortlich ist. Die zweite Methode eignet sich für einige Sondersituationen.

Das obige ist der detaillierte Inhalt vonGolang-Installationszertifikat. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage