由未知权威机构签署的x509证书

时间:2017-07-18 11:41:50

标签: ssl go x509

我正在尝试一些基本示例来从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包,问题解决了。

1 个答案:

答案 0 :(得分:4)

根据您的错误,我假设您使用的是Linux?

您可能需要在运行程序的计算机上安装ca-certificates。

在Ubuntu上,您可以执行以下操作:

b2c.exe