【发布时间】:2018-09-20 00:44:40
【问题描述】:
我创建了一个新的 Docker 映像:
FROM ubuntu:18.04
# Install dependencies
RUN apt-get update
RUN apt-get install -y build-essential g++ curl openssl libssl-dev apache2-utils git libxml2-dev sshfs libbz2-dev libsqlite3-dev tk-dev libffi-dev libreadline-dev libfreetype6-dev libpng-dev
# Install Python
RUN curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
RUN echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile && \
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile && \
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile && \
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
RUN source ~/.bash_profile && \
pyenv install 3.7-dev && \
pyenv virtualenv 3.7-dev venv && \
pyenv global venv && \
pip install -U pip
但是,在容器中运行此程序后,由于证书问题,我无法访问任何网站。这在 Python(3.6 和 3.7)和 openssl 中都会发生:
openssl s_client -connect discordapp.com:443
openssl s_client -connect python.org:443
openssl s_client -connect google.com:443
全部返回相同的错误:Verify return code: 20 (unable to get local issuer certificate)
在 Python 中,它给了我(当 discord.py 尝试连接到 discordapp.com 时:
SSL handshake failed on verifying the certificate
protocol: <asyncio.sslproto.SSLProtocol object at 0x7fd78479c6d8>
transport: <_SelectorSocketTransport fd=6 read=polling write=<idle, bufsize=0>>
Traceback (most recent call last):
File "/root/.pyenv/versions/3.7-dev/lib/python3.7/asyncio/sslproto.py", line 625, in _on_handshake_complete
raise handshake_exc
File "/root/.pyenv/versions/3.7-dev/lib/python3.7/asyncio/sslproto.py", line 189, in feed_ssldata
self._sslobj.do_handshake()
File "/root/.pyenv/versions/3.7-dev/lib/python3.7/ssl.py", line 763, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1048)
SSL error in data received
我尝试使用 apt-get install ca-certificates 更新我的证书,但命令指出此软件包已经是最新的。
我该如何解决这个问题?
【问题讨论】:
-
您在运行 Python 代码时看到的完整错误是什么?
-
已更新以包含 python 错误。
-
你试过here的解决方案了吗?
-
这些解决方案似乎是针对 Mac OS X 的。我没有找到适用于 Ubuntu 18.04 的等效解决方案。