python - 通过 python3 requests.exceptions.SSLError 访问 phabricator 的问题
问题描述
...
from phabricator import Phabricator
phab = Phabricator(host='https://<URL>:8090/', token='api-token')
phab.user.whoami()
...
我收到错误消息:
user@prompt:/var/lib/jenkins/scripts/basics$ python3 test_phabricator.py
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 485, in wrap_socket
cnx.do_handshake()
File "/home/ggopal/.local/lib/python3.8/site-packages/OpenSSL/SSL.py", line 1828, in do_handshake
self._raise_ssl_error(self._ssl, result)
File "/home/ggopal/.local/lib/python3.8/site-packages/OpenSSL/SSL.py", line 1566, in _raise_ssl_error
_raise_current_error()
File "/home/ggopal/.local/lib/python3.8/site-packages/OpenSSL/_util.py", line 57, in exception_from_error_queue
raise exception_type(errors)
OpenSSL.SSL.Error: [('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 376, in _make_request
self._validate_conn(conn)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 996, in _validate_conn
conn.connect()
File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 366, in connect
self.sock = ssl_wrap_socket(
File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 370, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 491, in wrap_socket
raise ssl.SSLError("bad handshake: %r" % e)
ssl.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])",)
在处理上述异常的过程中,又出现了一个异常:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 436, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='URL', port=8090): Max retries exceeded with url: /user.whoami (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))
在处理上述异常的过程中,又出现了一个异常:
Traceback (most recent call last):
File "test_phabricator.py", line 4, in <module>
phab.user.whoami()
File "/home/ggopal/.local/lib/python3.8/site-packages/phabricator/__init__.py", line 253, in __call__
return self._request(**kwargs)
File "/home/ggopal/.local/lib/python3.8/site-packages/phabricator/__init__.py", line 307, in _request
response = requests.post(path, data=body, headers=headers, timeout=self.api.timeout)
File "/usr/lib/python3/dist-packages/requests/api.py", line 116, in post
return request('post', url, data=data, json=json, **kwargs)
File "/usr/lib/python3/dist-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='URL', port=8090): Max retries exceeded with url: /user.whoami (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))
任何解决问题的指针?我似乎某些基本身份验证失败,因为这是访问 phabricator 的基本命令。
解决方案
推荐阅读
- python - 是否有退出和重新输入脚本的命令?
- android - Android jetpack 组件 - 导航抽屉点击吐司
- python - 这里的`in dic`有什么用
- python - 如何使用 try 和 except 块防止重复?
- css - 使用 ngStyle 指定备用背景图像
- android - 无法在另一台 PC 上构建我的 android studio 项目,gradle 说“原因:路径可能不是 null 或空字符串。path='null'”
- video.js - VideoJs formatTime 未定义
- python - Python 队列:如何延迟/延长/修改阻塞获取的超时?
- audio - 有没有办法检测 FFMPEG 视频文件上的黑色
- ios - 当用户使用 iOS 13 Swift 5 点击推送通知时,在特定视图中打开应用程序