我在开发机器上设置了一个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连接会以这种方式工作吗?