使用 python 的 docker 中独有的本地颁发者证书错误

sta*_*ing 6 python url ssl ssl-certificate docker

仅当向 https url 发出请求时,Python 中的 docker 应用程序才会出现以下错误。

<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)>

在 Docker 之外,该应用程序可以运行。我可以在其他语言应用程序(例如 dotnet)的 docker 映像中获取相同的 URL。

我努力了:

  1. RUN update-ca-certificates
  2. 安装certfi库并在调用期间手动提供证书
  3. certify在 docker 镜像的不同位置手动插入库自带的证书,例如/usr/local/share/ca-certificates//etc/ssl/certs/RUN update-ca-certificates
  4. 尝试了Python的不同版本(3.6.93.8.4)和提供者(alpinebuster) 。slim-buster
  5. 设置不同的环境变量REQUESTS_CA_BUNDLE,例如SSL_CERT_FILE等。
  6. 使用不同的库,例如requests, urllib,urllib3

....还有大量不同的东西。

当我关闭验证时它当然可以工作,但我想保留验证。

Sim*_*ggs 6

我在 ARM Ubuntu 20.04 容器中遇到了这个问题。

我安装了ca-certificates和curl,但仍然无法使用curl。对我来说,修复最终是在调用curl之前添加以下内容:

export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
Run Code Online (Sandbox Code Playgroud)