亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用錯誤的證書執行https請求?

如何使用錯誤的證書執行https請求?

Go
Cats萌萌 2021-05-03 10:22:19
假設我想以https://golang.org編程方式獲取信息。目前,golang.org(ssl)的證書不正確,*.appspot.com因此我在運行此證書時將其頒發給:package mainimport (    "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.Configstruct?。?。
查看完整描述

3 回答

?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

正確的方式(從Go 1.13開始)(由下面的答案提供):


customTransport := http.DefaultTransport.(*http.Transport).Clone()

customTransport.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}

client := &http.Client{Transport: customTransport}

原始答案:


這是一種實現方法,而不會丟失的默認設置DefaultTransport,并且不需要根據用戶評論提供虛假請求。


defaultTransport := http.DefaultTransport.(*http.Transport)


// Create new Transport that ignores self-signed SSL

customTransport := &http.Transport{

  Proxy:                 defaultTransport.Proxy,

  DialContext:           defaultTransport.DialContext,

  MaxIdleConns:          defaultTransport.MaxIdleConns,

  IdleConnTimeout:       defaultTransport.IdleConnTimeout,

  ExpectContinueTimeout: defaultTransport.ExpectContinueTimeout,

  TLSHandshakeTimeout:   defaultTransport.TLSHandshakeTimeout,

  TLSClientConfig:       &tls.Config{InsecureSkipVerify: true},

}

client := &http.Client{Transport: customTransport}

較短的方法:


customTransport := &(*http.DefaultTransport.(*http.Transport)) // make shallow copy

customTransport.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}

client := &http.Client{Transport: customTransport}

警告:僅用于測試/開發目的。否則,后果自負?。?!


查看完整回答
反對 回復 2021-05-17
  • 3 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號