在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 和憑證:
產生 CA:
openssl genrsa -out rootCA.key 4096 openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
產生憑證網域:
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中文網其他相關文章!