gpt4 book ai didi

ssl - 如何使用错误的证书进行 https 请求?

转载 作者:IT老高 更新时间:2023-10-28 12:57:08 26 4
gpt4 key购买 nike

假设我想以编程方式获取 https://golang.org。目前 golang.org (ssl) 有一个错误的证书颁发给 *.appspot.com 所以当我运行这个时:

package main

import (
"log"
"net/http"
)

func main() {
_, err := http.Get("https://golang.org/")
if err != nil {
log.Fatal(err)
}
}

我得到(如我所料)

Get https://golang.org/: certificate is valid for *.appspot.com, *.*.appspot.com, appspot.com, not golang.org

现在,我想自己信任这个证书(想象一个我可以验证指纹等的自行颁发的证书):我如何提出请求并验证/信任该证书?

我可能需要使用 openssl 下载证书,将其加载到我的文件中并填写 tls.Config struct !?

最佳答案

安全说明:禁用安全检查很危险,应该避免

您可以对默认客户端的所有请求全局禁用安全检查:

package main

import (
"fmt"
"net/http"
"crypto/tls"
)

func main() {
http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
_, err := http.Get("https://golang.org/")
if err != nil {
fmt.Println(err)
}
}

您可以禁用客户端的安全检查:

package main

import (
"fmt"
"net/http"
"crypto/tls"
)

func main() {
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{Transport: tr}
_, err := client.Get("https://golang.org/")
if err != nil {
fmt.Println(err)
}
}

关于ssl - 如何使用错误的证书进行 https 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12122159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com