golang在请求https的port类型接口是如何跳过证书错误?tls: failed to verify certificate: x509: certificate signed by unknown authority
时间: 2023-09-25 20:14:01 浏览: 198
在Go语言中,如果要跳过对未知证书颁发机构的验证,可以通过自定义`http.Client`的`Transport`来实现。下面是一个示例代码:
```go
package main
import (
"crypto/tls"
"fmt"
"net/http"
"os"
)
func main() {
// 创建一个自定义的Transport
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, // 跳过证书验证
}
// 创建一个自定义的Client
client := &http.Client{Transport: tr}
// 发送请求
resp, err := client.Get("https://example.com")
if err != nil {
fmt.Println("请求失败:", err)
os.Exit(1)
}
defer resp.Body.Close()
fmt.Println("请求成功!")
}
```
在上述代码中,我们通过创建一个自定义的`http.Transport`,并设置它的`TLSClientConfig`的`InsecureSkipVerify`字段为`true`来跳过证书验证。然后,我们使用这个自定义的Transport来创建一个自定义的`http.Client`。最后,我们使用这个自定义的Client发送HTTPS请求。
需要注意的是,跳过证书验证存在安全风险,因为这样做将使你的应用容易受到中间人攻击。因此,在生产环境中,请慎重考虑是否跳过证书验证,并确保你了解相关风险。
阅读全文