首頁 >後端開發 >Golang >如何在 Go 中使用自訂或不受信任的憑證處理 HTTPS 請求?

如何在 Go 中使用自訂或不受信任的憑證處理 HTTPS 請求?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-11 12:05:10654瀏覽

How to Handle HTTPS Requests with Custom or Untrusted Certificates in Go?

在Go 中使用憑證發送HTTPS 要求

與需要憑證驗證的HTTPS 服務互動時,開發者可能會遇到與不知名相關的錯誤授權機構。為了解決這個問題,Go 提供了一種使用受信任的 CA 憑證來驗證伺服器憑證的機制。

要解決這個問題,您需要取得頒發伺服器憑證的受信任機構的 CA 憑證。取得 CA 憑證後,您可以將其新增至 HTTP 用戶端的傳輸層,如下所示:

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

此外,您可以產生自訂 CA 憑證並簽署您自己的憑證以進行安全通訊。以下步驟概述如何為特定網域建立您自己的 CA 和憑證:

  1. 產生 CA:

    openssl genrsa -out rootCA.key 4096
    openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
  2. 產生憑證網域:

    openssl genrsa -out secure.domain.com.key 2048
    openssl req -new -key secure.domain.com.key -out secure.domain.com.csr
    openssl x509 -req -in secure.domain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -days 365 -out secure.domain.com.crt

透過執行下列步驟,您可以驗證伺服器憑證並在 Go 應用程式中建立安全的 HTTPS 連線。

以上是如何在 Go 中使用自訂或不受信任的憑證處理 HTTPS 請求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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