首頁 >後端開發 >Golang >Golang中遇到SSL錯誤時如何驗證HTTPS憑證?

Golang中遇到SSL錯誤時如何驗證HTTPS憑證?

Patricia Arquette
Patricia Arquette原創
2024-12-07 22:38:16322瀏覽

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

使用 Golang 驗證 HTTPS 憑證

使用自訂憑證向伺服器發出 HTTPS 要求時,必須驗證其真實性以確保安全通訊。

在一個此類場景中,在單獨連接埠上執行的應用程式在嘗試存取 HTTPS 上託管的 REST API 時遇到 SSL 錯誤。此錯誤的原因是無法識別的憑證授權單位。

要解決此問題,在 HTTPS 請求期間將憑證授權單位新增至傳輸至關重要。以下程式碼片段示範如何實現此目的:

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

或者,如果沒有預先存在的 CA 憑證可用,該解決方案建議產生您自己的 CA 並頒發由該 CA 簽署的憑證。以下指令提供了逐步方法:

產生CA:

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt

產生由CA 簽署的secure.domain.com 憑證:

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

以上是Golang中遇到SSL錯誤時如何驗證HTTPS憑證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn