gpt4 book ai didi

python - ssl.SSLError : [SSL: UNSUPPORTED_PROTOCOL] unsupported protocol (_ssl. c :852) in Docker Python:3. 6-slim

转载 作者:行者123 更新时间:2023-12-02 18:45:51 30 4
gpt4 key购买 nike

我正在使用 Docker 来设置我的 Python 环境。因为,我正在使用 python:3.6-slim基础图像。

我现在需要向仅在 Intranet 中可用的 URL 发送 get 请求(假设它是 https://internal.company.com/API/some_value )。我在 AWS EC2 上使用 Ubuntu 服务器,我正在尝试构建此镜像。

从该 EC2 服务器,我可以请求上述 URL,但是,当我从 docker 容器内部执行相同操作时,我收到以下错误。

Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 672, in urlopen
chunked=chunked,
File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 376, in _make_request
self._validate_conn(conn)
File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 994, in _validate_conn
conn.connect()
File "/usr/local/lib/python3.6/site-packages/urllib3/connection.py", line 394, in connect
ssl_context=context,
File "/usr/local/lib/python3.6/site-packages/urllib3/util/ssl_.py", line 370, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "/usr/local/lib/python3.6/ssl.py", line 407, in wrap_socket
_context=self, _session=session)
File "/usr/local/lib/python3.6/ssl.py", line 817, in __init__
self.do_handshake()
File "/usr/local/lib/python3.6/ssl.py", line 1077, in do_handshake
self._sslobj.do_handshake()
File "/usr/local/lib/python3.6/ssl.py", line 689, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: UNSUPPORTED_PROTOCOL] unsupported protocol (_ssl.c:852)

注意 :我可以从容器内请求其他 https 网站。内部 URL 中使用的 SSL 协议(protocol)可能与 Internet 上使用的网站不同,我不知道是什么。

以下是我的 Dockerfile。我是否需要安装任何其他软件包来支持这一点?
FROM python:3.6-slim
WORKDIR /app
RUN apt-get -y update \
&& apt-get -y upgrade \
&& apt-get install -y poppler-utils \
&& apt-get install -y libsm6 libxext6 libxrender-dev libglib2.0-0

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get install -y postgresql

COPY dlib-19.17.0-cp36-cp36m-linux_x86_64.whl /app/dlib-19.17.0-cp36-cp36m-linux_x86_64.whl
COPY requirements.txt /app/requirements.txt

RUN pip3 install dlib-19.17.0-cp36-cp36m-linux_x86_64.whl \
&& pip3 install -r requirements.txt

COPY . /app

CMD gunicorn -t 300 --workers 5 --bind 0.0.0.0:8080 wsgi

我正在使用请求库发送 GET 请求
import requests as r

response = r.get('https://internal.company.com/API/some_value')
print(response)

最佳答案

可能您的服务器正在公开旧的、不安全的 TLS 协议(protocol)版本,现代 OpenSSL 被配置为不允许。
https://stackoverflow.com/a/53065682/6214034可能有帮助。
编辑 2021:
让我为那些懒得阅读的人总结一下您在评论中的内容...
您必须从 TLSv1.2 更改条目 MinProtocol至TLSv1.0/etc/ssl/openssl.cnf要替换该行,您可以添加 RUN sed -i -E 's/MinProtocol[=\ ]+.*/MinProtocol = TLSv1.0/g' /etc/ssl/openssl.cnf到你的 Dockerfile

关于python - ssl.SSLError : [SSL: UNSUPPORTED_PROTOCOL] unsupported protocol (_ssl. c :852) in Docker Python:3. 6-slim,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59408646/

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