2

我们使用 docker 容器来构建我们的代码。通常当我连接到我公司的 VPN 时,运行任何尝试从 Web(比如 github)下载依赖项的命令都会失败,并出现错误“证书由未知机构签名”,如下所示:

go: github.com/BurntSushi/toml@v0.4.1: Get "https://proxy.golang.org/github.com/%21burnt%21sushi/toml/@v/v0.4.1.mod": x509: certificate signed by unknown authority

如果我断开与公司 VPN 的连接,同样的命令会通过并构建成功。这里到底发生了什么?

谢谢,

4

3 回答 3

2

您的公司可能正在通过MITM窃听您。

您必须在您的机器上安装他们的证书,或者您也可以尝试使用GOINSECURE环境变量。

无论哪种方式,与您的网络管理员交谈可能都是一个好主意。

于 2022-02-18T10:53:05.657 回答
0

公司的 IT 部门通常会实施 SSL 防火墙过​​滤器,以阻止员工浏览恶意站点,从而降低网络中恶意软件的可能性。请参阅Corporate Proxy Root Certificates我的博客文章部分并与您自己的环境进行比较。或者,它可能是 VPN 软件执行此操作。

白名单

良性站点通常可以在此类软件中列入白名单,以使计算机能够直接连接到受信任的外部站点。如果您能获得人们的同意,这是首选选项,尽管它可能取决于恶意 GitHub 存储库等威胁。

配置开发信任

我的博客文章展示了如何为各种操作系统和技术栈配置信任。例如,对于 Docker 容器,您可以执行我的Dockerfile所做的操作,使用标准 Linux 命令信任根证书颁发机构。

我在开发期间配置 SSL 信任的主要原因是使用具有本地 SSL 连接的 HTTP 代理工具,以便我可以查看 HTTP 消息并正确验证行为,作为设计安全生产部署的一部分。我还经常使用 OAuth 技术,这通常需要 SSL。代理工具还以等效的方式替换远程站点的根 CA,因此工作设置需要信任代理工具的根 CA。

当然,您不应该对将在生产中使用的 Docker 映像执行此类操作,尽管它在本地测试期间可能很有用且具有教育意义。

私人 PKI 学习

出于兴趣,在将 Kubernetes 系统组合在一起时,我有时也会使用自签名的根 CA 作为certmanager 集群颁发者。那是我在上述 Dockerfile 中使用的根 CA,使我能够在部署 pod 时自动创建受信任的 SSL 证书。

于 2022-02-24T19:46:10.577 回答
0

除非它干扰您的公司逻辑,否则也可以在不更改默认网关的情况下连接到您公司的 VPN。

这样,只有到您的 VPN 网络的流量将通过 VPN 路由,而所有其他流量都不会。

于 2022-02-19T16:39:21.753 回答