当前位置: 首页 > 知识库问答 >
问题:

运行golang http的Docker容器。客户端获取错误`由未知授权机构签名的证书`

权浩邈
2023-03-14

我创建了一个docker容器,用于使用GoLang与google api对话。我开始使用一个SCRATCH容器,在切换到ubuntu/alpine时,我得到了由未知授权机构签署的错误证书。

响应,错误:=客户端。得到(”https://www.googleapis.com/oauth2/v3/userinfo“”

解决这个问题的任何帮助都将是巨大的。我可以在我的mac上很好地运行代码。

做了一些研究后,我可以看到这个问题https://github.com/golang/go/issues/24652

但我不知道这是否直接相关,或者我是否需要与容器共享一些证书。

共有2个答案

拓拔德馨
2023-03-14

您可以使用ubuntu专用的自签名证书。在开始之前,您应该配置一个具有sudo权限的非root用户。您可以通过遵循Ubuntu 16.04的初始服务器设置来了解如何设置这样的用户帐户。

韩博简
2023-03-14

对于暂存,除了应用程序之外,还需要在映像中包含受信任的证书。例如,如果您的项目中有直接注入的ca-certificates.crt:

FROM scratch
ADD ca-certificates.crt /etc/ssl/certs/
ADD main /
CMD ["/main"]

如果使用多级构建,并且只希望分发供应商打包证书,则如下所示:

FROM golang:alpine as build
# Redundant, current golang images already include ca-certificates
RUN apk --no-cache add ca-certificates
WORKDIR /go/src/app
COPY . .
RUN CGO_ENABLED=0 go-wrapper install -ldflags '-extldflags "-static"'

FROM scratch
# copy the ca-certificate.crt from the build stage
COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=build /go/bin/app /app
ENTRYPOINT ["/app"]
 类似资料:
  • 我正在使用Golang 1.9创建一个客户端应用程序。2,我在访问后端时遇到一些问题。问题是我的应用程序在最新版本的Windows和Linux中运行良好,但是,当我在Windows XP上运行它时(是的,不幸的是,我必须支持Windows XP,因为我们的一些客户拒绝升级他们的操作系统),我在尝试执行HTTP get和HTTP POST:

  • 我有一个带有Golang的容器,它调用https api。我使用的是一个scratch容器,当我尝试运行时,我会得到一个由未知机构签署的 我的Dockerfile如下所示: 我用这个answare更新了我的Dockerfile。但是当我尝试构建容器时,我得到了和

  • 我有一个API服务器,使用由受尊敬的CA颁发的非自签名证书。当我连接到此服务器时,我收到以下错误: x509:由未知权限签署的证书 我使用golang客户端通过库进行连接。证书配置正确,因为我没有收到关于它的错误投诉。 我没有预料到这个错误,因为我使用的是CA。我没有得到的错误时,使用网络浏览器。

  • 问题内容: 在运行docker命令时,我不断收到这样的错误: 我正在使用没有任何http代理的Fedora 20 x86_64。 我用google搜索,但找不到任何线索,也不知道如何解决此错误,有人可以给我一些解决此问题的提示吗? 以下是一些其他信息可能会有所帮助: 问题答案: 事实证明,这与CDN提供程序有关。 在这里检查:https : //github.com/dotcloud/docker

  • 我试图从Web请求数据的一些基本示例,但是所有对不同主机的请求都会导致SSL错误:。注意:我不支持代理,也没有发生任何形式的证书拦截,因为使用curl或浏览器没有问题。 我目前使用的代码示例是: 编辑:代码运行在Arch linux内核4.9.37-1-lts上。 编辑2:显然在我的系统上的版本之间有差异,通过(重新)移动证书并重新手动安装包,问题得到了解决。

  • 在我的Go应用程序中,我打电话到 这取决于环境,在本地将在http上,而在生产环境中,它将在 当我使用postman在https上测试生产路由时,没有问题,路由工作正常。 但是当我从WS运行它时,我得到: 这是我的代码: 我能做些什么来解决这个问题?