如何修复urlopen错误[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:590)>错误

时间:2019-02-08 21:01:24

标签: python-2.7 kubernetes sentry

我目前正在Kubernetes中运行Sentry,使用我们加密和证书管理器来自动生成证书。当Sentry尝试将错误发送到哨兵服务器时,会引发以下错误:

urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)> (url: https://example.host.com/)

我已验证已安装用于2.7.15的正确python软件包。软件包包括certifiurllib2以及相关性。

关闭TLS验证有效,但这是不得已的方法。即使这是内部托管的服务,安全性也非常重要。

1 个答案:

答案 0 :(得分:1)

根据我的经验,即使是最新的ca-certificates软件包有时也不包含全部3 Let's Encrypt certificates。解决方案(?)是将它们下载到“用户控制的”证书目录(通常为/usr/local/share/ca-certificates)中,然后重新运行update-ca-certificates

# the first one very likely is already in your chain,
# but including it here won't hurt anything
for i in isrgrootx1.pem.txt lets-encrypt-x3-cross-signed.pem.txt letsencryptauthorityx3.pem.txt
do
    curl -vko /usr/local/share/ca-certificates/`basename $i .pem.txt`.crt \
        https://letsencrypt.org/certs/$i
done
update-ca-certificates

理想的结果是对群集中的每个节点执行此过程,然后将 actual ssl目录批量安装到容器中,因此每个容器都将从最新的证书中受益。但是,我想只是在受影响的容器中执行此操作也可以

更新:我记错了,它是/usr/local/...,这些文件显然需要以.crt而不是.pem

结尾