gpt4 book ai didi

docker - 无法以新图像获得本地颁发者证书

转载 作者:行者123 更新时间:2023-12-02 18:07:52 29 4
gpt4 key购买 nike

我创建了一个新的 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 更新我的证书,但该命令指出此软件包已经是最新的。

我怎样才能解决这个问题?

最佳答案

请试一试。

openssl s_client -connect python.org:443 -verify false -debug

如果要禁用验证,请使用我上面写的命令。

-debug is optional.



我认为这是一个重复的话题,因为问题不在于 docker,而在于 OpenSSL 控制台语法。

检查这个: OpenSSL unable to get local issuer certificate unless CAfile is explicitly specified .

实际上,您必须找到您的 -CApath目录 .你的证书在那里。

你也需要一个通用的 CAcert,所以访问这个站点:
https://curl.haxx.se/docs/caextract.html .

希望它会有所帮助。
祝你好运。

关于docker - 无法以新图像获得本地颁发者证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52415941/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com