英文:
How to send cacert , cert and key with https request in GoLang?
问题
我是你的中文翻译助手,以下是你要翻译的内容:
我对GoLang还不熟悉。有人可以帮我提供GoLang的代码吗,用于执行以下curl请求:
curl -v --cacert ca.crt --cert tls.crt --key tls.key --location --request POST 'https://<.......>' --header 'Content-Type: application/x-www-form-urlencoded'
英文:
I am new to GoLang. Can anyone please help me with the code in GoLang for the following curl request.
curl -v --cacert ca.crt --cert tls.crt --key tls.key --location --request POST 'https://<.......>' --header 'Content-Type: application/x-www-form-urlencoded'
答案1
得分: 4
从 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},
},
},
}
// 发起请求
r, err := client.Get("https://myserver.internal.net:9443")
// ...
英文:
From https://smallstep.com/hello-mtls/doc/combined/go/go step 5.
This should do wat you want it to, you just have to specify another URL, and change the file names in the example.
// ...
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")
// ...
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论