我一直在尝试通过Rabbitmq
与SSL
建立联系。
我遵循的步骤如下:
使用tls-gen
在服务器上生成证书和pem文件生成的文件如下:
server_key.pem
server_certificate.pem
client_key.pem
client_certificate.pem
ca_key.pem
ca_certificate.pem
点击此链接enabling ssl rabbitmq后,我在rabbitmq.config
下创建了一个名为/etc/rabbitmq
的文件,复制了默认配置文件并取消注释了这些行:
[
{rabbit, [
{tcp_listeners, [5671]},
{ssl_listeners, [5672]},
{auth_mechanisms, ['EXTERNAL','PLAIN']},
{ssl_options, [{cacertfile,"/path/to/ca_certificate.pem"},
{certfile,"/path/to/server_certificate.pem"},
{keyfile,"/path/to/server_key.pem"},
{verify,verify_peer},
{fail_if_no_peer_cert,false}]}
]}
].
我已将客户端密钥复制到我尝试连接到rabbitmq的计算机上,并使用以下参数:
RABBITMQ_CONNECTION_PARAMETERS = {'host': 'rabbitmqHost', 'port': 5671,
'heartbeat_interval': 0,
'ssl': True,
'ssl_options': {'certfile':'client_certificate.pem',
'keyfile': 'client_key.pem',
}
}
根据此link
中指定的参数未启用SSL并使用Plain Credentials我可以连接到rabbitmq服务器。但是,使用上面的设置,我在连接时遇到以下错误:
DEBUG:pika.callback:已添加:{'回调':>,'仅':无,' one_shot':False,'争论':无} 2017-03-10 16:00:23 [pika.callback] DEBUG:已添加:{'回调':>,'仅':无,' one_shot&#39 ;:错误,'参数':无} DEBUG:pika.callback:已添加:{'回调':>,'仅':无,' one_shot':是的,'参数' ;:没有,'来电':1} 2017-03-10 16:00:23 [pika.callback] DEBUG:已添加:{'回调':>,'仅':无,' one_shot&#39 ;:是的,'参数':无,'来电':1} 信息:pika.adapters.base_connection:使用SSL连接到rabbitmqSever:5672 2017-03-10 16:00:23 [pika.adapters.base_connection]信息:使用SSL连接到rabbitmqSever:5672 警告:pika.adapters.base_connection:连接到rabbitmqSever:5672失败:[Errno 336265218] _ssl.c:355:错误:140B0002:SSL例程:SSL_CTX_use_PrivateKey_file:system lib 2017-03-10 16:00:23 [pika.adapters.base_connection]警告:连接到rabbitmqSever:5672失败:[Errno 336265218] _ssl.c:355:错误:140B0002:SSL例程:SSL_CTX_use_PrivateKey_file:system lib 警告:pika.connection:无法连接,剩下0次尝试 2017-03-10 16:00:23 [pika.connection]警告:无法连接,剩下0次尝试 DEBUG:pika.callback:处理0:_on_connection_error 2017-03-10 16:00:23 [pika.callback] DEBUG:处理0:_on_connection_error DEBUG:pika.callback:Calling> for" 0:_on_connection_error" 2017-03-10 16:00:23 [pika.callback] DEBUG:Calling> for" 0:_on_connection_error" 延期中未处理的错误: CRITICAL:twisted:延迟中的未处理错误: 2017-03-10 16:00:23 [twisted] CRITICAL:Deferred中的未处理错误:
更新:
如果我使用openssl
进行连接:
openssl s_client -connect server:5671 -cert client_certificate.pem -key client_key.pem
我得到以下内容:
CONNECTED(00000003)
140243320723104:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:795:
no peer certificate available
No client certificate CA names sent
SSL handshake has read 7 bytes and written 295 bytes
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
并且rabbitmq日志显示连接,但是从ssl端口5672,它表示连接被拒绝。
请注意:我正在从scrapy spider
答案 0 :(得分:0)
令人恐惧的是,在两年内没有人回答过这个问题……我知道它可以在同一实例上通过SSL工作。 Click here,但我没有让它在本地主机上工作,因为尽管使用SSL,但它似乎仍使用“ guest”用户,而来宾用户不允许来自本地主机的连接。
%% -*- mode: erlang -*-
[
{rabbit,
[
{ssl_listeners, [5671]},
{ssl_options, [{cacertfile,"/home/daudn/tls-gen/basic/result/ca_certificate.pem"},
{certfile,"/home/daudn/tls-gen/basic/result/server_certificate.pem"},
{keyfile,"/home/daudn/tls-gen/basic/result/server_key.pem"},
{verify,verify_none},
{fail_if_no_peer_cert,false}]},
{auth_mechanisms, ['PLAIN', 'EXTERNAL']}
].