无法使用SSL

时间:2017-03-10 10:41:46

标签: ssl scrapy rabbitmq

我一直在尝试通过RabbitmqSSL建立联系。 我遵循的步骤如下:

  1. 使用tls-gen

    在服务器上生成证书和pem文件

    生成的文件如下:

    • server_key.pem

    • server_certificate.pem

    • client_key.pem

    • client_certificate.pem

    • ca_key.pem

    • ca_certificate.pem

  2. 点击此链接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}]} ]} ].

  3. 我已将客户端密钥复制到我尝试连接到rabbitmq的计算机上,并使用以下参数:

    RABBITMQ_CONNECTION_PARAMETERS = {'host': 'rabbitmqHost', 'port': 5671, 'heartbeat_interval': 0, 'ssl': True, 'ssl_options': {'certfile':'client_certificate.pem', 'keyfile': 'client_key.pem', } }

  4. 根据此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

    连接到rabbitmq

1 个答案:

答案 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']}


].