0
pikaを使用してSSLを使用してRabbitMQに接続しようとしています(自己署名済み)。Pikaが証明書ファイルなしでSSLを使用して接続する
問題は、証明書ファイルを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}]},
Iが無効にTCPコネクションを持っていると、接続に失敗されていない理由SSLを有効に?
証明書が有効でない場合、クライアントライブラリ(pika)が接続を切断することはありません –
その場合、クライアント側で次のパラメータを使用して接続を作成してください: 'pika.BlockingConnection pika.ConnectionParameters( host = '172.16.120.130'、ポート= 25585、credentials = pika.PlainCredentials(ユーザー、パスワード)、ssl = True、ssl_options = {"cert_reqs":ssl.CERT_REQUIRED、 "ca_certs":caCert}) ) ' ここで、' caCert'はサーバ証明書を含む証明書ファイルです。 –
これを行わないと、クライアントはサーバー証明書の検証を無視します。接続設定の 'ssl_options'でサーバ証明書を検証するようにクライアントに指示する必要があります –