【问题标题】:x509 certificate signed by unknown authority由未知机构签署的 x509 证书
【发布时间】:2017-12-23 06:20:54
【问题描述】:

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

【问题讨论】:

  • 您的代码在我的本地机器上完美运行。您是直接在机器中运行还是在任何容器中运行?
  • 这段代码在 Ubuntu docker 容器中运行良好
  • 我正在运行 Arch Linux 内核版本 4.9.37-1-lts。代码在任何其他机器上都可以正常工作,但在这台机器上却不行。
  • @MaicoTimmerman 你是怎么解决的?我有同样的问题
  • 请查看我的最终编辑,我移动了证书并手动重新安装了 ca-certificates-utils。

标签: ssl go x509


【解决方案1】:

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

您可能必须在运行程序的机器上安装 ca-certificates。

在 Ubuntu 上,您将执行如下操作:

sudo apt-get install ca-certificates

【讨论】:

  • 首先,我使用的是 arch linux 并且我已经安装了 ca 证书:pacaur -Qsq ca-certificates 结果为 ca-certificates ca-certificates-cacert ca-certificates-mozilla ca-certificates-utils
  • 使用sudo apt-get install --reinstall ca-certificates 因为这个包几乎肯定已经安装了
  • 谢谢大家,在 debian 10 "sudo apt-get install --reinstall ca-certificates" 上为我工作!
猜你喜欢
  • 2020-05-27
  • 2019-10-29
  • 1970-01-01
  • 1970-01-01
  • 2020-07-23
  • 2019-10-02
  • 2023-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多