由於市場上對企業視頻通話的需求越來越高,目前市面上的一些視頻通話會議系統無法全部兼容所有的要求,爲此我們對視頻通話會議系統EasyRTC也做了升級更新。
我們的研發人員最近在進行EasyRTC新版調試視頻的時候,發現報錯“x509: certificate signed by unknown authority”,本文我們一起來看一下什麼原因,爲後面碰到同樣報錯的人做參考。
在EasyRTC產品開發過程中,Go語言開發的程序需要向底層C語言開發的程序發送http請求獲取部分信息。
resp, err := client.Get(GetAPIURL("/api/v1/getlivesessions?id="+id))
if err != nil {
log.Println(err)
return nil
}
此程序最終出現錯誤,返回nil。
在C語言程序中,收到HTTP請求後,會自動將此請求代理到HTTPS請求中,因此在Go語言發送HTTP請求後,會收到HTTPS的證書,然後驗證證書的有效性。一般來說,如果是私有生成的證書,或者未經過第三方權威證書公司認證後的證書,瀏覽器和官方都會提示錯誤。C中的HTTPS證書爲默認私有證書,因爲會出現“x509: certificate signed by unknown authority”錯誤。
因爲是本機訪問C程序的接口,在此種場景下,不需要考慮安全問題,因此只需要在Go原因開發時,不驗證證書即可正常獲取接口信息。
按照以下方式編寫獲取不需要校檢證書。
func getClient() *http.Client {
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{
Timeout: 3 * time.Second,
Transport: tr,
}
return client
}
其中TLSClientConfig: &tls.Config{InsecureSkipVerify: true}代表爲不需要校驗證書。如果InsecureSkipVerify設置爲false,則會校驗證書。