视频通话会议系统EasyRTC报certificate signed by unknown authority错误解决方案

    技术2022-07-11  180

    由于市场上对企业视频通话的需求越来越高,目前市面上的一些视频通话会议系统无法全部兼容所有的要求,为此我们对视频通话会议系统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,则会校验证书。

    EasyRTC播放效果:

    Processed: 0.023, SQL: 9