Назад | Перейти на главную страницу

RabbitMQ с сертификатом LetsEncrypt

Я пытался установить сертификаты, созданные LetsEncrypt, на мой сервер rabbitmq, но мне не повезло.

Чтобы проверить, не нужно ли бороться с проблемами с разрешениями, я скопировал файлы pem из

/etc/letsencrypt/live/<domain>/

в мой домашний каталог. Я также скопировал файл cacert.pem в свой домашний каталог из того места, где я его нашел:

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

Я решил начать с попытки установить сертификаты поверх плагина управления, отредактировав rabbitmq.config, чтобы добавить

{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

Однако при попытке перейти к порту плагина управления мои файлы журнала rabbitmq содержали tls_alert

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

Я использую правильные файлы или, возможно, я столкнулся с более серьезной проблемой?

ОБНОВИТЬ Сведения о создании сертификата: Lets encrypt был установлен путем клонирования репозитория git по адресу:

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

Сведения о создании сертификата. Сертификат сервера был создан и установлен с помощью набора инструментов Lets Encrypt с помощью следующей команды.

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

Обратите внимание, что это сертификат субдомена. Например, xxxx.domain.com.

ОБНОВЛЕНИЕ 2 Я подтвердил, что сертификаты действительны и работают с частью проблемы AMQPS. Я изменил основной параметр конфигурации, чтобы он содержал

   {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}]}

См. Прикрепленное изображение для получения снимка экрана клиентов Pika с поддержкой SSL.

Действительно есть проблема с RabbitMQ 3.2.4.

Я сделал точно такую ​​же конфигурацию (как и вы, по крайней мере, часть SSL) на Ubuntu 14.04 (RabbitMQ 3.2.4 и Erlang 16.b3) и Ubuntu 15.10 или Centos 7(имея RabbitMQ 3.5.4 и Erlang 18.0).

У меня это работает в 3.5.4, а не в 3.2.4 {mochiweb_socket_server, 295, {acceptor_error, {error, accept_failed}}}. Я не могу найти ни одного открытого отчета об ошибке, но это, безусловно, проблема, связанная с плагином управления, поскольку сертификаты отлично работают в более поздней версии.