==== RabbitMQ Documentation ====
* RabbitMQ
* Pika (used for RabbitMQ Python interface)
==== SSL Certificate Usage ====
* Followed RabbitMQ documentation to produce SSL server/client certificates.
* Added this code to the RabbitMQ Server configuration file:
[
{rabbit, [
{ssl_listeners, [5671]},
{ssl_options, [{cacertfile,"/path/to/testca/cacert.pem"},
{certfile,"/path/to/server/cert.pem"},
{keyfile,"/path/to/server/key.pem"},
{verify,verify_peer},
{fail_if_no_peer_cert,true}]}
]}
].
* Added this code to the RabbitMQ Client (via Pika) Setup:
#!/usr/bin/env python
import pika
import sys,ssl
# Setup our ssl options
ssl_options = {"ca_certs": "/path/to/testca/cacert.pem",
"certfile": "/path/to/client/cert.pem",
"keyfile": "/path/to/client/key.pem",
"cert_reqs": ssl.CERT_REQUIRED,
}
connection = pika.BlockingConnection(pika.ConnectionParameters(host='servername.com',port=5671,ssl=True,ssl_options=ssl_options))
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()
===== Errors =====
Make sure cacerts.pem is up to date.
cat all /etc/grid-security/ceriticates/*.pem to cacerts.pem.