docker - Docker go image - 无法获取 - x509:由未知权威签署的证书
问题描述
在 docker golang 图像中,我正在尝试go install
打包并因此错误而失败:
go install google.golang.org/protobuf/cmd/protoc-gen-go@1.27.0: google.golang.org/protobuf/cmd/protoc-gen-go@1.27.0: invalid version: Get "https://proxy.golang.org/google.golang.org/protobuf/cmd/protoc-gen-go/@v/1.27.0.info": x509: certificate signed by unknown authority
我尝试安装 CA 证书失败
知道可能是什么问题吗?
解决方案
好的,问题出在我的安全客户端:Cisco AnyConnect“Umbrella”。
它就像中间人一样,用自己的证书重新签署请求。
为了让 in-docker go 客户端信任 Cisco Umbrella 重新签名的流量,需要将“Cisco Umbrella Root CA”证书添加到 docker 文件中:
所以点击 .cer URI 我们可以看到该证书。
现在在我的容器内我可以:
$ wget http://www.cisco.com/security/pki/certs/ciscoumbrellaroot.cer
然后将其转换.cer
为.crt
文件:
$ openssl x509 -inform DER -in ciscoumbrellaroot.cer -out ciscoumbrellaroot.crt
然后将其复制到证书文件夹:
$ cp ciscoumbrellaroot.crt /usr/local/share/ca-certificates/ciscoumbrellaroot.crt
最后更新证书:
$ update-ca-certificates
输出这个:
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
完毕!现在我们可以去获取任何包裹:
$ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.27.1
go: downloading google.golang.org/protobuf v1.27.1
这是关于 cisco 安全客户端的文章,但可以应用于那里的任何客户端
推荐阅读
- java - 在 Java 8 中使用 Group By 和属性
- google-cloud-platform - 在 GCP 上停止和启动 VM 实例时导致数据丢失?
- c# - 如何在 Unity3D 中创建像物理一样的面条(绳子/绳子)?
- c# - .net 中代码的运行时编译,在编译时具有更好的性能
- python - “如何在特定的延时列表上打印列表数据?”
- javascript - Laravel 会话:为什么我的函数会加载旧会话?
- vim - 如何为两个不同的 (neo)vim 插件使用相同的键盘映射
- node.js - 节点应用程序上的 Google Cloud Run gVisor 系统调用错误
- javascript - 使用 webRTC 检索客户端计算机的公共 IP 地址
- r - R中使用模式的子字符串字符向量