我在开发机器上设置了一个RabbitMQ服务器来监听TLS / SSL连接,端口5671,根据以下文档:https://www.rabbitmq.com/ssl.html
通过SSL安全连接发布的AMQP客户端使用videlalvaro / php-amqplib库2.6.0版。
我为服务器和客户端创建了SSL证书颁发机构和证书,如文档中所述。
# mkdir testca
# cd testca
# mkdir certs private
...
然后用建议的内容创建了openssl.cnf, 并为openssl.cnf文件,客户端和服务器目录运行列出的openssl命令。
之后我启用了RabbitMQ SSL支持并在日志中验证了它正在收听:
=INFO REPORT==== 9-Feb-2016::14:02:41 ===
started SSL Listener on 127.0.0.1:5671
我还在客户端实现了SSL,它一切正常。
=INFO REPORT==== 9-Feb-2016::14:09:48 ===
accepting AMQP connection <0.4285.0> (127.0.0.1:28876 -> 127.0.0.1:5671)
服务器和客户端位于同一台开发机器上。
我不太了解的部分是关于SSL权限和证书。
开发中的服务器和客户端都使用相同的〜/ testca / cacert.pem文件。
RabbitMQ配置:
{cacertfile,"/home/me/testca/cacert.pem"},
{certfile,"/home/me/server/cert.pem"},
{keyfile,"/home/me/server/key.pem"},
客户端的AMQPSSLConnection参数:
$sslOptions = array(
'cafile' => '/home/me/testca/cacert.pem',
'local_cert' => '/home/me/client/key-cert.pem',
'peer_name'=>'me-OptiPlex-790',
'verify_peer_name' => true
);
在制作时,服务器和客户端当然位于不同的远程计算机上。
那么,我现在该怎么办?
我想我应该在RabbitMQ制作上遵循相同的程序 机?
也就是说,用一些实际数据创建openssl.cnf文件 生成服务器的密钥和证书?
然后在客户端计算机上为客户端执行相同的操作?
所以服务器和客户端会分开 openssl.cnf和... / testca / cacert.pem文件,以及它们自己的文件 证书和密钥文件?
SSL连接会以这种方式工作吗?