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

Обновить сертификат SSL на RabbitMQ

просто предоставлю информацию об окружающей среде перед описанием проблемы:

Windows Server 2016
Сервер RabbitMQ 3.7.5
Erlang TOP 20 (9.1)
OpenSSL 1.10i Light (64-бит) (для преобразования сертификатов в формат .pem)

RabbitMQ "advanced.config":

[
  {rabbit,
  [
    {tcp_listeners, [5673]},
    {ssl_listeners, [5672]},
      {ssl_options, [
        {cacertfile,"C:/Users/%USER%/AppData/Roaming/RabbitMQ/cert/cabundle.pem"},
        {certfile,"C:/Users/%USER%/AppData/Roaming/RabbitMQ/cert/%MACHINENAME%.pem"},
        {keyfile,"C:/Users/%USER%/AppData/Roaming/RabbitMQ/cert/key.pem"},
        {password,"%PASSWORD%"},
        {verify,verify_none},
        {fail_if_no_peer_cert,false}]}
  ]},

   {lager, [

    {handlers, [
      {lager_file_backend, [{file, "Rabbit.log"},
                            {level, info},
                            {size, 10485760},
                            {count, 15}
    ]}]}
    ]}

].

Я сгенерировал сертификат с помощью внутреннего центра сертификации Windows с этим .inf:

[Version] 

Signature="$Windows NT$"

[NEWREQUEST]
Subject="CN=%MACHINENAME%.company.com"
MachineKeySet = True
KeyUsage = 0xA0 
KeySpec = 1
KeyLength = 2048
HashAlgorithm = SHA256
Exportable = TRUE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
RequestType = PKCS10


[Extensions]

2.5.29.17 = "{text}"

_continue_ = "dns=%MACHINENAME%.company.com"


[RequestAttributes]
CertificateTemplate= InternalSSLCertificate

Затем я экспортировал файл сертификата в .pfx с закрытым ключом и преобразовал их в формат pem с помощью следующих команд:

Ключевой файл:

openssl pkcs12 -in certificate.pfx -nocerts -out key.pem

End certificate:
openssl pkcs12 -in certificate.pfx -clcerts -nokeys -out %machinename%.pem

CA bundle:
openssl pkcs12 -in certificate.pfx -cacerts -nokeys -out cabundle.pem

Хорошо, сейчас уже присутствует и работает 3 сертификата, когда я проверяю журналы, я вижу следующий вывод в rabbit.log:

2020-03-05 15:32:11.980 [info] @rabbit_reader:mainloop:494 accepting AMQP connection  (%SOME IP ADDRESS%:58072 -> %RABBIT MQ SERVER%:5672)
2020-03-05 15:32:11.980 [info] @rabbit_reader:handle_method0:1209 connection  (%SOME IP ADDRESS%:58072 -> %RABBIT MQ SERVER%:5672): user '%SOMEUSER%' authenticated and granted access to vhost '/'

Хорошо, когда я изменяю 3 сертификата, описанные в "advanced.config", и перезапускаю службу RabbitMQ, кажется, что ничего не работает.

Из журнала я вижу:

 * rabbitmq_management
 * rabbitmq_web_dispatch
 * rabbitmq_management_agent

Но после этого ничего не происходит, никаких AMQP подключений.
Общее имя и альтернативное имя субъекта в% MACHINENAME% .pem совпадают, и пароль для key.pem также такой же.
Стоит отметить, что у нас появилась новая инфраструктура PKI (окна). Есть ли у rabbitMQ собственное хранилище доверенных сертификатов, и если да, то как мне доверять своим новым сертификатам?
Или мне что-то еще не хватает?

Я могу попытаться подключиться с этого Linux-сервера (который работает со старыми сертификатами (соединение установлено)), но я получаю этот вывод с новыми сертификатами:

read tcp %IP%:34846->%RABBITMQSERVER%:5672: i/o timeout
tap failed with read tcp %IP%:34846->%RABBITMQSERVER%:5672: i/o timeout