如何向PyCharm添加自签名证书?

2024-07-04 08:39:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要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找到它?在

请给我一些想法。在


Tags: inpysrcvenvlibpackagesconnectline
2条回答

也许您可以调整系统范围的证书信任设置以接受您的自签名证书。在macOS上,可以通过Keychain访问来实现。在

我不相信PyCharm会将SSL证书设置传递给Python。这个插座.IO客户端目前不正式支持自签名证书,但它已被请求。请参见thisthis,了解与客户机中的SSL证书相关的两个问题。在

也就是说,长轮询传输是通过requests包实现的,因此您可以设置REQUESTS_CA_BUNDLE环境变量来告诉请求您的证书。但显然这对WebSocket是行不通的。在

相关问题 更多 >

    热门问题