我正在尝试一些基本示例来从Web请求数据,但是对不同主机的所有请求都会导致SSL错误:x509: certificate signed by unknown authority
。 注意:我不在代理后面,并且没有发生任何形式的证书拦截,因为使用curl或浏览器可以正常工作。
我目前正在使用的代码示例是:
package main
import (
"fmt"
"net/http"
"io/ioutil"
"os"
)
func main() {
response, err := http.Get("https://google.com")
if err != nil {
fmt.Printf("%s\n", err)
os.Exit(1)
} else {
defer response.Body.Close()
contents, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
}
fmt.Printf("%s\n", string(contents))
}
}
编辑:代码在Arch linux内核4.9.37-1-lts。
上运行 编辑2 :显然/etc/ssl/certs/ca-certificates.crt
在我的系统上的版本之间存在差异,通过(重新)移动证书并手动重新安装ca-certificates-utils
包,问题解决了。
答案 0 :(得分:4)
根据您的错误,我假设您使用的是Linux?
您可能需要在运行程序的计算机上安装ca-certificates。
在Ubuntu上,您可以执行以下操作:
b2c.exe