python - Windows 上的 Python:ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败
问题描述
有人在 Windows 上设置了 rabbitmqadmin,现在当我们运行将创建队列的作业时,脚本由于 ssl 问题而失败
11:27:12 Traceback (most recent call last):
11:27:12 File "D:\jenkins\home\workspace\RabbitMQ-BUILD\target\classes\rabbitmqadmin", line 535, in http
11:27:12 conn.request(method, path, body, headers)
11:27:12 File "http\client.py", line 1239, in request
11:27:12 File "http\client.py", line 1285, in _send_request
11:27:12 File "http\client.py", line 1234, in endheaders
11:27:12 File "http\client.py", line 1026, in _send_output
11:27:12 File "http\client.py", line 964, in send
11:27:12 File "http\client.py", line 1400, in connect
11:27:12 File "ssl.py", line 401, in wrap_socket
11:27:12 File "ssl.py", line 808, in __init__
11:27:12 File "ssl.py", line 1061, in do_handshake
11:27:12 File "ssl.py", line 683, in do_handshake
11:27:12 ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:748)
11:27:12
11:27:12 During handling of the above exception, another exception occurred:
11:27:12
11:27:12 Traceback (most recent call last):
11:27:12 File "D:\jenkins\home\workspace\RabbitMQ-BUILD\target\classes\rabbitmqadmin", line 1066, in <module>
11:27:12 main()
11:27:12 File "D:\jenkins\home\workspace\RabbitMQ-BUILD\target\classes\rabbitmqadmin", line 447, in main
11:27:12 method()
11:27:12 File "D:\jenkins\home\workspace\RabbitMQ-BUILD\target\classes\rabbitmqadmin", line 638, in invoke_list
11:27:12 format_list(self.get(uri), cols, obj_info, self.options)
11:27:12 File "D:\jenkins\home\workspace\RabbitMQ-BUILD\target\classes\rabbitmqadmin", line 477, in get
11:27:12 return self.http("GET", "%s/api%s" % (self.options.path_prefix, path), "")
11:27:12 File "D:\jenkins\home\workspace\RabbitMQ-BUILD\target\classes\rabbitmqadmin", line 537, in http
11:27:12 traceback.print_exc(e)
11:27:12 File "traceback.py", line 159, in print_exc
11:27:12 File "traceback.py", line 100, in print_exception
11:27:12 File "traceback.py", line 497, in __init__
11:27:12 File "traceback.py", line 332, in extract
11:27:12 TypeError: '>=' not supported between instances of 'ssl.SSLError' and 'int'
当我在那里检查 ssl 配置时,我看到了一些在 Windows 中显然不存在的路径(openssl_cafile,openssl_capath)
>>> print(ssl.get_default_verify_paths())
DefaultVerifyPaths(cafile=None, capath=None, openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='/usr/local/ssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='/usr/local/ssl/certs')
不幸的是,我是 python 和 rabbitmq 新手,因为我没有设置整个东西,所以我被卡住了。我尝试了解如何解决问题,以便不再发生 ssl 错误
- 配置有什么问题
- 你在哪里为windows在python中配置认证路径
这是我所知道的:
我们使用自签名证书(必须)。
rabbitmq.config中的ssl相关配置如下
{ssl_options, [{cacertfile, "D:\\RabbitMQ\\rabbitmqca.pem"},
{certfile, "D:\\RabbitMQ\\myhost_listener.pem"},
{keyfile, "D:\\RabbitMQ\\myhost_listener_key.pem"},
{verify, verify_peer},
{fail_if_no_peer_cert, false}]},
解决方案
推荐阅读
- ruby - 如何在Ruby中用零初始化一个未确定大小的数组?
- r - 如何过滤不同行中的日期?
- c# - Visual Studio 2019 Win Forms 在停靠后会出现控件大小的不稳定位移
- kotlin - Kotlin:通用转换函数参数
- python - 使用 cv2 而不是 HOG 进行图像处理
- ios - 按日期发布 tableview 数据的排序顺序 | 迅速
- c++ - gtest 正在链接到已安装的库
- python - 如何使用 Python 将多个对象添加到 json 文件中的单个数组中?
- php - php INSERT INTO不会将数据插入mysql数据库
- cryptography - 生成默克尔树一致性证明