我正在编写一个涉及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) 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)
我知道我可以传递False给verify参数,如下所示:
r = requests.post(url, data=data, verify=False)
Run Code Online (Sandbox Code Playgroud)
但是,我想要做的是将请求指向磁盘上的公钥副本,并告诉它信任该证书.
当向特定 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)')))
我已经尝试过:
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) 我正在开发一个运行 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 …
在我的 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?
我在一些帖子中搜索了很长时间,但所有这些答案都没有帮助,例如:
我只是通过一个简单的示例来对 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 桌面。