如何在 GoLang 中使用 https 请求发送 cacert 、 cert 和 key ?

tri*_*212 4 https curl go

我是 Go 语言的新手。任何人都可以帮助我使用 GoLang 中的代码来处理以下卷曲请求。

curl -v --cacert ca.crt --cert tls.crt --key tls.key --location --request POST 'https://<.......>' --header 'Content-Type: application/x-www-form-urlencoded'
Run Code Online (Sandbox Code Playgroud)

Dyl*_*ink 5

来自https://smallstep.com/hello-mtls/doc/combined/go/go步骤 5。

这应该可以实现您想要的功能,您只需指定另一个 URL,并更改示例中的文件名即可。

// ...

caCert, _ := ioutil.ReadFile("ca.crt")
caCertPool := x509.NewCertPool()
caCertPool.AppendCertsFromPEM(caCert)

cert, _ := tls.LoadX509KeyPair("client.crt", "client.key")

client := &http.Client{
    Transport: &http.Transport{
        TLSClientConfig: &tls.Config{
            RootCAs: caCertPool,
            Certificates: []tls.Certificate{cert},
        },
    },
}

// Make a request
r, err := client.Get("https://myserver.internal.net:9443")

// ...
Run Code Online (Sandbox Code Playgroud)