我正在编写一个涉及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) 我已经在debian中安装了一个自签名的root ca证书/usr/share/ca-certificates/local并安装了它们sudo dpkg-reconfigure ca-certificates.在这一点上true | gnutls-cli mysite.local很高兴,并且true | openssl s_client -connect mysite.local:443很高兴,但是python2和python3请求模块坚持认为它对证书不满意.
python2:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 70, in get
return request('get', url, params=params, **kwargs)
File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 56, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 488, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 609, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python2.7/site-packages/requests/adapters.py", line 497, in send
raise …Run Code Online (Sandbox Code Playgroud) 我正在尝试验证 SSL,但它不起作用。
我的代码是:
test = requests.get('https://confidential.xx/', verify='certif.cer')
Run Code Online (Sandbox Code Playgroud)
错误是:
文件“C:\Users\xxxxx\Downloads\WinPython\WPy64-3850\python-3.8.5.amd64\lib\site-packages\requests\adapters.py”,第 514 行,在 send raise SSLError(e, request=要求)
SSLError: HTTPSConnectionPool(host='xxxxx', port=443): 超过最大重试次数,url: / (由 SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:证书链中的自签名证书 (_ssl. c:1123)')))
我不想使用 verify=False ,它可以工作但不安全。
我尝试过使用和不使用代理,同样的错误......
我需要使其工作,请问如何使该代码工作?
我正在尝试从 Huggingface 下载 BERT 的分词器。
我正在执行:
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
Run Code Online (Sandbox Code Playgroud)
错误:
<Path>\tokenization_utils_base.py in from_pretrained(cls, pretrained_model_name_or_path, *init_inputs, **kwargs)
1663 resume_download=resume_download,
1664 local_files_only=local_files_only,
-> 1665 use_auth_token=use_auth_token,
1666 )
1667
<Path>\file_utils.py in cached_path(url_or_filename, cache_dir, force_download, proxies, resume_download, user_agent, extract_compressed_file, force_extract, use_auth_token, local_files_only)
1140 user_agent=user_agent,
1141 use_auth_token=use_auth_token,
-> 1142 local_files_only=local_files_only,
1143 )
1144 elif os.path.exists(url_or_filename):
<Path>\file_utils.py in get_from_cache(url, cache_dir, force_download, proxies, etag_timeout, resume_download, user_agent, use_auth_token, local_files_only)
1347 else:
1348 raise ValueError(
-> 1349 "Connection error, and we cannot find the requested files in the cached …Run Code Online (Sandbox Code Playgroud) 我正在使用访问RESTful API的请求。一切似乎都正常。我可以进行身份验证,拉回会话令牌,甚至可以对我为API编写的类中的方法进行单元测试。然后我尝试运行我的代码。
首先,这是我打的电话。标头是在init()中设置的与会话相关的静态项。主体是根据文件中的数据动态构建的,并传递给此函数。所有数据均有效。
response = requests.post(url, headers=(Requestheader), data=json.dumps((Requestbody)))
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,它将使用我提供的元数据更新100多个记录。在项目150的某处,我得到以下信息:
ssl.SSLCertVerificationError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:证书链中的自签名证书(_ssl.c:1045)
我的第一步是打电话给供应商,以了解他们的所有Web服务器是否都已正确签署证书,以证明它们在负载均衡我时发现了配置错误的服务器。他们告诉我事实并非如此。
然后,我用Google搜索消息,发现有一个验证kwarg,因此我尝试:
response = requests.post(url, headers=Requestheader, data=json.dumps(Requestbody), verify=False)
Run Code Online (Sandbox Code Playgroud)
我知道这不是理想的长期方法,但是我想对其进行测试以查看行为是否相同。它做同样的事情。它运行了一段时间,并抛出了ssl错误。我认为verify = False的想法是不会检查。
供应商建议我检查正在使用的url,但这很好。我想如果有代理服务器或真正的中间人攻击引起问题,那么我在失败之前不会看到很多次成功。我以为这可能是会话超时,但是应该抛出401状态,并且我的活动水平对于非活动超时来说太高了。
我是python noob,不是安全专家。建议表示赞赏。