相关疑难解决方法(0)

抛出SSLError的Python请求

我正在编写一个涉及CAS,jspring安全检查,重定向等的简单脚本.我想使用Kenneth Reitz的python请求,因为它是一项很棒的工作!但是,CAS需要通过SSL进行验证,因此我必须先通过该步骤.我不知道Python的要求是什么?这个SSL证书应该驻留在哪里?

Traceback (most recent call last):
  File "./test.py", line 24, in <module>
  response = requests.get(url1, headers=headers)
  File "build/bdist.linux-x86_64/egg/requests/api.py", line 52, in get
  File "build/bdist.linux-x86_64/egg/requests/api.py", line 40, in request
  File "build/bdist.linux-x86_64/egg/requests/sessions.py", line 209, in request 
  File "build/bdist.linux-x86_64/egg/requests/models.py", line 624, in send
  File "build/bdist.linux-x86_64/egg/requests/models.py", line 300, in _build_response
  File "build/bdist.linux-x86_64/egg/requests/models.py", line 611, in send
requests.exceptions.SSLError: [Errno 1] _ssl.c:503: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Run Code Online (Sandbox Code Playgroud)

python ssl urllib3 python-requests

309
推荐指数
15
解决办法
54万
查看次数

如何让Python请求信任自签名SSL证书?

import requests
data = {'foo':'bar'}
url = 'https://foo.com/bar'
r = requests.post(url, data=data)
Run Code Online (Sandbox Code Playgroud)

如果URL使用自签名证书,则会失败

requests.exceptions.SSLError: [Errno 1] _ssl.c:507: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Run Code Online (Sandbox Code Playgroud)

我知道我可以传递Falseverify参数,如下所示:

r = requests.post(url, data=data, verify=False)
Run Code Online (Sandbox Code Playgroud)

但是,我想要做的是将请求指向磁盘上的公钥副本,并告诉它信任该证书.

python ssl python-requests

53
推荐指数
9
解决办法
8万
查看次数

为什么我收到“无法获取本地颁发者证书 (_ssl.c:997)”

当向特定 URL 发送请求时,我收到 SSL 错误,但我不确定原因。首先请查看我收到的错误消息:

requests.exceptions.SSLError: HTTPSConnectionPool(host='dicmedia.korean.go.kr', port=443): 超过最大重试次数,网址为:/multimedia/naver/2016/40000/35000/14470_byeon-gyeong.wav(由以下原因引起) SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:997)')))

我已经尝试过:

  • https://github.com/Unbabel/COMET/issues/29(这似乎与 Python 收到的有关使用特定 SSL 证书的内部更新有关(这里不是专家)
  • 下载有问题的证书并直接链接到它verify="private/etc/ssl/certs"

老实说,我不知道为什么会收到此错误。正如错误消息本身表明的那样,相关服务器似乎可以以某种方式获取我的本地证书。该脚本一直有效到一周前。在那之前我没有更新Python。现在我使用从官方网站下载的python 3.10.2。

我不想设置,verify=False因为这只是跳过验证过程,让我很容易受到攻击,因为许多人已经指出了不同的问题。除此之外,我无法解决该错误确实令我困扰。

任何帮助深表感谢。具体要求见:

import requests

def request(url):
    response = requests.get(url, verify="/private/etc/ssl/certs")
    print(response)

request("https://dicmedia.korean.go.kr/multimedia/naver/2016/40000/35000/14470_byeon- 
gyeong.wav")
Run Code Online (Sandbox Code Playgroud)

python openssl

10
推荐指数
2
解决办法
4万
查看次数

Python请求不处理仅来自一台机器的丢失中间证书

我正在开发一个运行 CentOS (Linux) 的机器,当尝试访问特定子域进行工作时遇到以下错误:

Traceback (most recent call last):
  ... # My code, relevant call is requests.get(url)
  File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 60, in get
    return request('get', url, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 49, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 457, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 569, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/adapters.py", line 420, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Run Code Online (Sandbox Code Playgroud)

根据https://www.digicert.com/help/,子域“没有发送所需的中间证书”(这是 DigiCert 发现的唯一问题)。然而,当我从 Mac …

ssl-certificate python-2.7 python-requests

7
推荐指数
2
解决办法
1万
查看次数

PyInstaller 请求模块出现 SSL 错误 - 缺少模块 ssl (_ssl)

在我的 python 脚本中,我使用 requests 模块调用 API 来 GET 和 POST 数据。

Python环境:anaconda3,python 3.7 /软件包:requests 2.24.0,pyinstaller 3.6,openssl 1.1.1h...

我对 PyInstaller 生成的 EXE 文件存在以下问题:当我运行此文件时,收到以下错误消息。当我从 Python 运行脚本时,不会发生此错误:

Traceback (most recent call last):
  File "site-packages\PyInstaller\loader\rthooks\pyi_rth_certifi.py", line 13, in <module>
  File "c:\programdata\anaconda3\envs\...\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 623, in exec_module
  File "ssl.py", line 98, in <module>
ImportError: DLL load failed: The specified module could not be found.
[20188] Failed to execute script pyi_rth_certifi
Run Code Online (Sandbox Code Playgroud)

如果我遵循例外错误行(ssl.py):

import _ssl             # if we can't import it, let the error propagate
Run Code Online (Sandbox Code Playgroud)

为什么无法导入ssl?

我在一些帖子中搜索了很长时间,但所有这些答案都没有帮助,例如:

Python …

python ssl openssl pyinstaller python-requests

4
推荐指数
1
解决办法
4212
查看次数

在 Docker 中使用 pip install 时出现自签名证书错误,但仅限于某些软件包

我只是通过一个简单的示例来对 Docker 的运行有一个基本的了解。这是我的 Docker 镜像文件:

FROM python:3.7-alpine

# copy all the files to the container
COPY . /test
WORKDIR /test

# install dependencies
RUN pip install pip_system_certs --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org
RUN pip install -r requirements.txt



# run the command
CMD ["python", "./test_script.py"]
Run Code Online (Sandbox Code Playgroud)

受信任的主机选项允许我们绕过公司网络安全设置并在 Windows 上内部安装软件包,它们似乎也适用于 Docker,但仅适用于某些软件包。例如,如果我的requirements.txt包含flask并请求一切都很好,但是pandas和numpy给我

警告:连接因“SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED]”) 中断后重试(重试(total=4,connect=None,read=None,redirect=None,status=None))证书验证失败:自签名证书链中的证书 (_ssl.c:1076)'))': /simple/numpy/

并失败了。我认为这对某些软件包有效但对其他软件包无效,这很奇怪。

任何帮助表示赞赏。

在 Windows 10 中使用 Docker 桌面。

python pip docker

2
推荐指数
1
解决办法
4594
查看次数