視頻通話會議系統EasyRTC報certificate signed by unknown authority錯誤解決方案

由於市場上對企業視頻通話的需求越來越高,目前市面上的一些視頻通話會議系統無法全部兼容所有的要求,爲此我們對視頻通話會議系統EasyRTC也做了升級更新。

RTC.png

我們的研發人員最近在進行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,則會校驗證書。

EasyRTC播放效果:

EasyRTC.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章