我目前正在Kubernetes中运行Sentry,使用我们加密和证书管理器来自动生成证书。当Sentry尝试将错误发送到哨兵服务器时,会引发以下错误:
urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)> (url: https://example.host.com/)
我已验证已安装用于2.7.15的正确python软件包。软件包包括certifi
,urllib2
以及相关性。
关闭TLS验证有效,但这是不得已的方法。即使这是内部托管的服务,安全性也非常重要。
答案 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