视频通话会议系统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

猜你喜欢

转载自blog.csdn.net/TsingSee/article/details/107062817