golang项目访问https的问题
ankexun · · 7057 次点击 · · 开始浏览一个golang的项目,使用了腾讯云的短信服务,腾讯云的短信服务URL是https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=xxxxx&random=xxxx,在开发平台,可以正常使用。编译后部署到生产平台,短信发不出来了。为了定位问题,找了一台干净的测试机,部署后也发不出短信,因此判断生产平台的云服务器没有问题。
在测试机上,经过调试,终于定位错误信息:x509: failed to load system roots and no roots provided
搜索错误信息,首先找到这篇《go语言在不支持cgo的情况下访问https链接》,看完内容后直觉这个解决方法不对,太不优美了。接着看到《go语言获取https报错x509: failed to load system roots》这篇,思路和解决方法没错了。因为我使用的是freebsd平台,所以对应的软件包名肯定不一样。尝试openssl等几个软件包,都没有解决问题。直到看到https://wiki.freebsd.org/Docker里有这么一段:
Common Errors
Missing /usr/docker! Please create / mount a ZFS dataset at this location.
The "docker" dataset needs to be created.
Error response from daemon: Get https://index.docker.io/v1/search?q=centos: x509: failed to load system roots and no roots provided
The "ca_root_nss" package is not installed.
豁然开朗,原来是缺少了ca_root_nss这个package。装上就搞定了。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
一个golang的项目,使用了腾讯云的短信服务,腾讯云的短信服务URL是https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=xxxxx&random=xxxx,在开发平台,可以正常使用。编译后部署到生产平台,短信发不出来了。为了定位问题,找了一台干净的测试机,部署后也发不出短信,因此判断生产平台的云服务器没有问题。
在测试机上,经过调试,终于定位错误信息:x509: failed to load system roots and no roots provided
搜索错误信息,首先找到这篇《go语言在不支持cgo的情况下访问https链接》,看完内容后直觉这个解决方法不对,太不优美了。接着看到《go语言获取https报错x509: failed to load system roots》这篇,思路和解决方法没错了。因为我使用的是freebsd平台,所以对应的软件包名肯定不一样。尝试openssl等几个软件包,都没有解决问题。直到看到https://wiki.freebsd.org/Docker里有这么一段:
Common Errors
Missing /usr/docker! Please create / mount a ZFS dataset at this location.
The "docker" dataset needs to be created.
Error response from daemon: Get https://index.docker.io/v1/search?q=centos: x509: failed to load system roots and no roots provided
The "ca_root_nss" package is not installed.
豁然开朗,原来是缺少了ca_root_nss这个package。装上就搞定了。