我正在尝试使用 pika 通过 SSL(自签名)连接到 RabbitMQ。
问题是,如果我不将证书文件提供给 pika,连接不会失败。
这是我的代码:
import pika
import urllib
connection = pika.BlockingConnection(pika.URLParameters("amqps://guest:[email protected]:25585"))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()
这是我的rabbitmq.config:
{tcp_listeners, []},
{ssl_listeners, [25585]},
{ssl_options, [{cacertfile, "/etc/rabbitmq/certs/cacert.pem"},
{certfile, "/etc/rabbitmq/certs/cert.pem"},
{keyfile, "/etc/rabbitmq/certs/key.pem"},
{verify, verify_peer},
{versions, ['tlsv1.2', 'tlsv1.1', 'tlsv1']},
{fail_if_no_peer_cert, false}]},
我禁用了 TCP 连接并启用了 SSL,为什么连接没有失败?
是因为服务器中这样的配置:
{fail_if_no_peer_cert, false}
更改为:
{fail_if_no_peer_cert, true}
这意味着如果客户端没有提供证书则断开连接。