Windows Server 2022中Python连接WebSocket遇SSL证书验证失败求助
解决Windows Server 2022上Python WebSocket SSL证书验证失败问题
针对你遇到的[SSL: CERTIFICATE_VERIFY_FAILED] unable to get local issuer certificate错误,试试以下几个具体方案:
确认Python证书文件路径
先查看当前Python环境使用的certifi证书位置,执行命令:python -c "import certifi; print(certifi.where())"记下输出的
.pem文件路径,后续会用到。同步Windows系统根证书
Windows Server的根证书可能未及时更新,执行以下命令从Windows更新同步最新根证书:certutil -syncWithWU或者手动导入缺失的根证书:打开「Internet选项」→「内容」→「证书」→「受信任的根证书颁发机构」,点击「导入」,选择对应根证书文件完成导入。
强制Python使用指定证书文件
在WebSocket连接代码中显式指定证书文件路径,以websocket-client库为例:import ssl from websocket import WebSocket # 替换为之前获取的certifi证书路径 CA_CERT_PATH = r"C:\Users\你的用户名\AppData\Local\Programs\Python\Python3x\Lib\site-packages\certifi\cacert.pem" ssl_ctx = ssl.create_default_context(ssl.Purpose.SERVER_AUTH) ssl_ctx.load_verify_locations(CA_CERT_PATH) ws = WebSocket(sslopt={"ssl_context": ssl_ctx}) ws.connect("wss://你的目标WebSocket地址")如果使用
websockets库,代码逻辑类似,在connect方法中传入ssl=ssl_ctx参数。检查服务器证书链完整性
用OpenSSL工具验证目标WebSocket服务器的证书链是否完整,执行命令:openssl s_client -connect your-websocket-domain:port -servername your-websocket-domain查看输出中的「Certificate chain」部分,如果存在「unable to get local issuer certificate」提示,说明服务器端证书链缺失中间证书,需要联系服务器管理员补充。
临时排查(仅测试用,禁止生产环境)
如果只是临时验证连接逻辑,可临时关闭证书验证(存在安全风险):import ssl from websocket import WebSocket ws = WebSocket(sslopt={"cert_reqs": ssl.CERT_NONE}) ws.connect("wss://你的目标WebSocket地址")
内容的提问来源于stack exchange,提问作者BinaFNA
相关产品推荐
相关产品推荐

