【问题标题】:SSL certificate verification works in Docker, not on KubernetesSSL 证书验证适用于 Docker,而不适用于 Kubernetes
【发布时间】:2021-09-22 02:08:00
【问题描述】:

我的 Kubernetes pod 出现了一个问题,困扰了我好几个星期。我在我的自托管 Kubernetes 集群上运行了一个 Rust Web 服务,前几天,OpenSSL 证书验证突然停止工作(也就是说,物理机或虚拟机或模板和 Docker 映像没有任何更改)。

奇怪的是,当我在我的机器上运行 Docker 镜像时——无论是在 Minikube 还是 Docker Desktop 中——它都能正常工作。更奇怪的是,当我直接在服务器上将它作为 Docker 容器运行时,它也可以与其他与 Kubernetes 相关的 Docker 容器一起运行。

当我尝试获取数据时抛出的 Rust reqwest 错误:

error sending request for url (https://google.com): error trying to connect: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:ssl/statem/statem_clnt.c:1915: (unable to get local issuer certificate)

我也尝试从生产集群的 Kubernetes pod 内部运行 wget,但没有任何成功:

~ # wget https://google.com
Connecting to google.com (<my public ipv4>:443)
ssl_client: google.com: certificate verification failed: unable to get local issuer certificate
wget: error getting a response: Connection reset by peer

由此,我得出结论,问题出在我的 Kubernetes 模板的某个地方,尽管它们确实在我的机器上工作(更具体地说,我已经使用 Helm 部署了图像)。有兴趣的朋友,here is all of the source code

感谢您的帮助!

【问题讨论】:

  • 我永远不会期望google.com&lt;my public ipv4&gt;;你在使用代理吗?

标签: docker ssl kubernetes rust


【解决方案1】:

显然,我很愚蠢地为我的集群域创建了一个通配符公共 DNS 记录:*.example.com 指向 example.com,而我的集群配置为 k8s.example.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 2017-03-11
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    相关资源
    最近更新 更多