我需要PyCharm(2019.1.1,在macosmojave上)在运行pythonsocketio客户机和flask socketio服务器时接受我的自签名SSL证书。在
我试图通过Preferences/Tools/Server Certificates
将自签名证书添加到PyCharm。然而,这并不能解决问题。当pythonsocketio客户机试图连接到flask socketio服务器时,它给了我错误。在
在客户端,错误如下所示:
Traceback (most recent call last):
File "message_manager.py", line 218, in run
namespaces=[self.channel])
File "/Users/hqiu/PycharmProjects/gps_simulator/src/venv/lib/python3.7/site-packages/socketio/client.py", line 262, in connect
engineio_path=socketio_path)
File "/Users/hqiu/PycharmProjects/gps_simulator/src/venv/lib/python3.7/site-packages/engineio/client.py", line 170, in connect
url, headers, engineio_path)
File "/Users/hqiu/PycharmProjects/gps_simulator/src/venv/lib/python3.7/site-packages/engineio/client.py", line 308, in _connect_polling
if self._connect_websocket(url, headers, engineio_path):
File "/Users/hqiu/PycharmProjects/gps_simulator/src/venv/lib/python3.7/site-packages/engineio/client.py", line 346, in _connect_websocket
cookie=cookies)
File "/Users/hqiu/PycharmProjects/gps_simulator/src/venv/lib/python3.7/site-packages/websocket/_core.py", line 514, in create_connection
websock.connect(url, **options)
File "/Users/hqiu/PycharmProjects/gps_simulator/src/venv/lib/python3.7/site-packages/websocket/_core.py", line 223, in connect
options.pop('socket', None))
File "/Users/hqiu/PycharmProjects/gps_simulator/src/venv/lib/python3.7/site-packages/websocket/_http.py", line 126, in connect
sock = _ssl_socket(sock, options.sslopt, hostname)
File "/Users/hqiu/PycharmProjects/gps_simulator/src/venv/lib/python3.7/site-packages/websocket/_http.py", line 260, in _ssl_socket
sock = _wrap_sni_socket(sock, sslopt, hostname, check_hostname)
File "/Users/hqiu/PycharmProjects/gps_simulator/src/venv/lib/python3.7/site-packages/websocket/_http.py", line 239, in _wrap_sni_socket
server_hostname=hostname,
File "/Users/hqiu/anaconda3/lib/python3.7/ssl.py", line 412, in wrap_socket
session=session
File "/Users/hqiu/anaconda3/lib/python3.7/ssl.py", line 853, in _create
self.do_handshake()
File "/Users/hqiu/anaconda3/lib/python3.7/ssl.py", line 1117, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)
这是服务器端的错误日志:
^{pr2}$所以我的问题是,如何将自签名证书添加到macOS上的PyCharm并让Python找到它?在
请给我一些想法。在
也许您可以调整系统范围的证书信任设置以接受您的自签名证书。在macOS上,可以通过Keychain访问来实现。在
我不相信PyCharm会将SSL证书设置传递给Python。这个插座.IO客户端目前不正式支持自签名证书,但它已被请求。请参见this和this,了解与客户机中的SSL证书相关的两个问题。在
也就是说,长轮询传输是通过requests包实现的,因此您可以设置
REQUESTS_CA_BUNDLE
环境变量来告诉请求您的证书。但显然这对WebSocket是行不通的。在相关问题 更多 >
编程相关推荐