RabbitMQ com um certificado LetsEncrypt

7

Eu tenho tentado instalar meus certificados gerados pelo LetsEncrypt no meu servidor rabbitmq, mas não tive sorte.

Para testar as coisas sem ter que lutar contra problemas de permissão, copiei os arquivos pem de

/etc/letsencrypt/live/<domain>/

para o meu diretório pessoal. Eu também copiei o arquivo cacert.pem para meu diretório pessoal a partir do local em que o encontrei:

/home/<user>/.local/share/letsencrypt/lib/python2.7/site-packages/requests/cacert.pem

Eu decidi começar tentando instalar os certificados no topo do plug-in de gerenciamento editando o rabbitmq.config para adicionar

{rabbitmq_management,
  [%% Pre-Load schema definitions from the following JSON file. See
   %% http://www.rabbitmq.com/management.html#load-definitions
   %%
   %% {load_definitions, "/path/to/schema.json"},
   %% Log all requests to the management HTTP API to a file.
   %%
   %% {http_log_dir, "/path/to/access.log"},
   %% Change the port on which the HTTP listener listens,
   %% specifying an interface for the web server to bind to.
   %% Also set the listener to use SSL and provide SSL options.
   %%
    {listener, [{port,     12345},
                {ip,       "127.0.0.1"},
                {ssl,      true},
                {ssl_opts, [{cacertfile, "/home/<user>/cacert.pem"},  %% File pulled from /home/<user>/.local....
                            {certfile,   "/home/<user>/cert.pem"}, %% File pulled from /etc/letsencrypt/live/<domain>/cert.pem
                            {keyfile,    "/home/<user>/privkey.pem"}]}]}  %% File pulled from /etc/letsencrypt/live/<domain>/privkey.pem

No entanto, ao tentar navegar para a porta do plug-in de gerenciamento, meus arquivos de log rabbitmq continham um tls_alert

=ERROR REPORT==== 14-Dec-2015::03:08:05 ===
    application: mochiweb
    "Accept failed error"
    "{error,{tls_alert,\"decode error\"}}"

Estou usando os arquivos corretos ou talvez haja um problema mais profundo que estou enfrentando?

UPDATE Detalhes da geração de certificados: Vamos criptografar foi instalado clonando o repositório git em:

git clone https://github.com/letsencrypt/letsencrypt

Detalhes da criação de certificados. O certificado do servidor foi criado e instalado usando o conjunto de ferramentas Lets Encrypt com o seguinte comando.

./letsencrypt-auto --server https://acme-v01.api.letsencrypt.org/directory -d <domain>

Uma observação é que é um certificado de subdomínio. Por exemplo, xxxx.domain.com.

UPDATE 2 Verifiquei se os certificados são válidos e estão funcionando para a parte AMQPS do problema. Eu modifiquei a opção de configuração principal para conter

   {ssl_listeners, [5671]},

   {ssl_options, [{cacertfile,           "/etc/rabbitmq/chain1.pem"},
                   {certfile,             "/etc/rabbitmq/cert1.pem"},
                   {keyfile,              "/etc/rabbitmq/privkey1.pem"},
                   {verify,               verify_none},
                   {fail_if_no_peer_cert, false}]}

Veja a imagem anexada para captura de tela dos clientes Pika habilitados para SSL

    
por Brian Cain 14.12.2015 / 05:31

1 resposta

3

Existe realmente um problema com RabbitMQ 3.2.4 .

Eu fiz exatamente a mesma configuração (como você fez, pelo menos a parte SSL) em Ubuntu 14.04 ( RabbitMQ 3.2.4 e Erlang 16.b3 ) e Ubuntu 15.10 ou Centos 7 (com RabbitMQ 3.5.4 e Erlang 18.0 ).

Eu consegui trabalhar no 3.5.4 e não no 3.2.4 {mochiweb_socket_server, 295, {acceptor_error, {error, accept_failed}}}. Não consigo encontrar nenhum relatório de bug aberto ainda, mas é certamente um problema ligado ao plug-in de gerenciamento, pois os certificados funcionam perfeitamente na versão mais recente.

    
por 22.12.2015 / 22:31