在 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中文网其他相关文章!