首頁 > 後端開發 > Golang > 如何在 Go 中使用憑證驗證 HTTPS 請求?

如何在 Go 中使用憑證驗證 HTTPS 請求?

Barbara Streisand
發布: 2024-12-11 00:34:10
原創
419 人瀏覽過

How to Verify HTTPS Requests Using Certificates in Go?

在Go 中使用憑證進行HTTPS 要求驗證

在需要與在不同連接埠上提供的啟用HTTPS 的REST API 進行通訊的在應用程式中,它經常會遇到SSL 驗證錯誤,例如「x509:由未知頒發機構簽署的憑證」。當應用程式無法識別 API 的憑證授權單位 (CA) 時,就會發生這種情況。

要解決此問題,您需要將 CA 憑證新增至要求的傳輸層。以下是示範如何執行此操作的Go 程式碼片段:

package main

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

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

    // Create a certificate pool from the CA certificate.
    caCertPool := x509.NewCertPool()
    caCertPool.AppendCertsFromPEM(caCert)

    // Configure the HTTP client with TLS settings.
    client := &http.Client{
        Transport: &http.Transport{
            TLSClientConfig: &tls.Config{
                RootCAs: caCertPool,
            },
        },
    }

    // Make a GET request to the HTTPS URL.
    resp, err := client.Get("https://secure.domain.com")
    if err != nil {
        log.Fatal(err)
    }

    // Process the HTTP response as usual.
    fmt.Println(resp.Status)
}
登入後複製

如果您尚未建立CA 來簽署您的證書,這裡有一些指導您的步驟:

產生CA:

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
登入後複製

為Secure.domain.com產生證書,簽章為CA:

openssl genrsa -out secure.domain.com.key 2048
openssl req -new -key secure.domain.com.key -out secure.domain.com.csr
登入後複製

在回答問題「通用名稱(例如伺服器FQDN 或您的姓名)[]:」時,輸入「secure.domain.com」(您的實際網域名稱) .

openssl x509 -req -in secure.domain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -days 365 -out secure.domain.com.crt
登入後複製

以上是如何在 Go 中使用憑證驗證 HTTPS 請求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板