回答

收藏

如何使用错误的证书执行 https 请求?

技术问答 技术问答 257 人阅读 | 0 人回复 | 2023-09-12

说我想以https://golang.org获取编程方法。golang.org (ssl) 有错误的证书,*.appspot.com当我运行这个时,它被颁发给它So:
) y1 L( q5 j7 j9 O
    / I. C. ?; K8 w
  • package mainimport  "log"    "net/http")func main()      _,err := http.Get("https://golang.org/")    if err != nil              log.Fatal(err)  code]我得到了(如我所料)[code]Get https://golang.org/: certificate is valid for *.appspot.com,*.*.appspot.com,appspot.com,not golang.org, E9 q- w) U: ]0 }4 O3 x
现在,我想信任这个证书(想象一下我可以验证指纹等自发证书):我如何提出请求并验证/信任证书?- Z* I  F5 F1 Y. K8 V& k
我可能需要使用 openssl 下载证书,加载到我的文件中并填写tls.Configstruct !?' v- A+ I# `! `$ m" m+ y
                                                               
" _" A0 x3 _- a- D0 c8 q    解决方案:                                                                * q" R" O) Q) @3 K2 H! ?* O
                                                                安全说明:禁止安全检查是危险的,应避免
! q1 L: Y* X6 ?9 S' T4 R: Q' U您可以对默认客户端的所有请求进行全球禁用安全检查:) r9 c0 D) u9 E; }0 t3 F* S/ N' k
[code]package mainimport  "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)  code]可禁用客户端安全检查:
( I: F1 U$ t( Z( L5 r, f[code]package mainimport  "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)  code]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则