无法在生产中将文件上载到google云存储

无法在生产中将文件上载到google云存储,go,google-cloud-storage,Go,Google Cloud Storage,我按照这份文档将文件上传到地面军事系统。 它在本地工作,但在生产中我遇到以下错误: Post:x509:加载系统根目录失败,且未提供根目录 你是否真的继续你链接的教程,确保你有正确的证书 错误本身可能与证书相关。当它尝试执行请求时,它会在基础系统上查找根证书,但找不到或无法打开它们。例如,在Ubuntu上,它们应该位于/usr/share/ca证书和/或/etc/ssl/certs下。确保您拥有具有正确权限的证书,以便能够执行所需的请求。对于任何google api,您都需要一个信任根CA 不

我按照这份文档将文件上传到地面军事系统。

它在本地工作,但在生产中我遇到以下错误:

Post:x509:加载系统根目录失败,且未提供根目录


你是否真的继续你链接的教程,确保你有正确的证书


错误本身可能与证书相关。当它尝试执行请求时,它会在基础系统上查找根证书,但找不到或无法打开它们。例如,在Ubuntu上,它们应该位于/usr/share/ca证书和/或/etc/ssl/certs下。确保您拥有具有正确权限的证书,以便能够执行所需的请求。

对于任何google api,您都需要一个信任根CA

不确定您的生产环境,但如果您使用Docker,请将此行添加到Dockerfile:

从Linux构建中,您可以看到查找系统根信任文件的顺序:


如果您的linux生产版本中没有这些目录,那么go将没有系统根信任,您将看到错误。

正如大家在回答中所说,这与我的dockerFile中缺少证书颁发机构有关

在我的例子中,在alpine中已经有一个名为ca certificates的包实用程序,它附带了预安装的证书。只需要将以下命令添加到我的docker

RUN apk --no-cache add ca-certificates
COPY /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
"/etc/ssl/certs/ca-certificates.crt",                // Debian/Ubuntu/Gentoo etc.
"/etc/pki/tls/certs/ca-bundle.crt",                  // Fedora/RHEL 6
"/etc/ssl/ca-bundle.pem",                            // OpenSUSE
"/etc/pki/tls/cacert.pem",                           // OpenELEC
"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem", // CentOS/RHEL 7
RUN apk --no-cache add ca-certificates