SSL:尝试连接到 python3.7 中的 websocket 时出现 CERTIFICATE_VERIFY_FAILED
Posted
技术标签:
【中文标题】SSL:尝试连接到 python3.7 中的 websocket 时出现 CERTIFICATE_VERIFY_FAILED【英文标题】:SSL: CERTIFICATE_VERIFY_FAILED while trying to connect to a websocket in python3.7 【发布时间】:2021-04-26 08:06:47 【问题描述】:这是我要运行的内容
ws = websocket.WebSocketApp('wss://open.rocket.chat/sockjs/websocket',
header=["User-Agent: MyProgram", "x-custom: header"],
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close,
on_ping=on_ping
)
ws.run_forever()
当我运行代码时,我从 on_error 函数中得到这个错误:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1091)
我在 macOS 上运行代码,python3.7
要求包括:
websocket==0.2.1
websocket-client==0.58.0
我之前尝试的解决方案是添加上面的标题,它在 Windows 和 linux 环境中工作,但在 macOS 中不工作。
我尝试的另一件事是像这样关闭 ssl 验证export PYTHONHTTPSVERIFY=0
,这也不起作用。
您能否解释一下这个错误背后的原因,为什么不一致? 有时有效,有时无效! 我想了解能够永久解决它的原因。 有什么建议吗?
【问题讨论】:
很多 Python 包都使用certifi
包中包含的根 CA 证书。不确定这是否也适用于 websocket/websocket-client。但我建议首先使用 pip 更新 certifi
包。
@Robert 我的要求中实际上有最新版本 certifi==2020.12.5 我尝试并重新安装了它,但没有成功。
【参考方案1】:
我找到了 MacOS 的答案。
您只需导航到Applications/Python 3.x
然后运行这个文件Install Certificates.command
【讨论】:
以上是关于SSL:尝试连接到 python3.7 中的 websocket 时出现 CERTIFICATE_VERIFY_FAILED的主要内容,如果未能解决你的问题,请参考以下文章
C中的OpenSSL-例程:ssl3_get_record:尝试使用TLS1_2连接到服务器时版本号错误
R RPostgreSQL 使用 SSL 连接到远程 Postgres 数据库