SSL接続用に5671ポートをリッスンするRHEL7上のRabbitMQサーバーに接続しようとしています。
RabbitMQ server's SSL listener has been configured like this:
[
{rabbit, [
{ssl_listeners, [5671]},
{ssl_options, [{cacertfile,"/etc/pki/tls/certs/samqp.dcu.ie.chain"},
{certfile,"/etc/pki/tls/certs/samqp.dcu.ie.crt"},
{keyfile,"/etc/pki/tls/private/samqp.dcu.ie.key"},
{verify,verify_peer},
{fail_if_no_peer_cert,false}]}
]}
]
クライアント側では、次の例外メッセージが表示されます。
クライアント マシンは Ubuntu 14.04 LTS です。
クライアントは、「vidalvaro/php-amqplib」ライブラリを使用してサーバーと通信する Moodle カスタム プラグインです。
ドキュメントに従って作成された自己署名証明書の実際のパスとファイル名は次のとおりです: https://www.rabbitmq.com/ssl.html
$sslOptions = array(
'cafile' => '/home/duro/testca/cacert.pem',
'local_cert' => '/home/duro/client/key-cert.pem',
'peer_name'=>'samqp.dcu.ie',
'verify_peer_name' => true
);
PHP には、1 つのファイルに連結された証明書とキーを使用する必要があるようです。したがって、'key-cert.pem' です。
これは、実際のURLを含め、クライアントから接続する方法です:
$connection = new AMQPSSLConnection('samqp.dcu.ie.crt', 5671, 'rMQUsername', 'rMQPasswd', '/', $sslOptions)
クライアント側では、次の例外メッセージが表示されます。
"stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed"
サーバー側で /var/log/rabbitmq/rabbit@sphinx.log を見ると、次のエラーが表示されます。
=ERROR REPORT==== 3-Mar-2016::14:08:26 ===
SSL: certify: ssl_alert.erl:93:Fatal error: unknown ca
では、この接続を機能させるにはどうすればよいでしょうか。