RabbitMQ mit einem LetsEncrypt-Zertifikat

8

Ich habe versucht, meine von LetsEncrypt generierten Zertifikate auf meinem rabbitmq-Server zu installieren, hatte aber kein Glück.

Um Dinge zu testen, ohne Berechtigungsprobleme bekämpfen zu müssen, habe ich die PEM-Dateien von kopiert

/etc/letsencrypt/live/<domain>/

in mein Home-Verzeichnis. Ich habe auch die Datei cacert.pem von dem Speicherort, an dem ich sie gefunden habe, in mein Home-Verzeichnis kopiert:

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

Ich beschloss, zunächst zu versuchen, die Zertifikate über dem Verwaltungs-Plugin zu installieren, indem ich die hinzuzufügende Datei rabbitmq.config bearbeitete

{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

Beim Versuch, zum Management-Plugin-Port zu navigieren, enthielten meine rabbitmq-Protokolldateien jedoch einen tls_alert

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

Benutze ich die richtigen Dateien oder gibt es vielleicht ein tieferes Problem, auf das ich stoße?

Details zur UPDATE- Zertifikatgenerierung: Die Verschlüsselung wurde durch Klonen des Git-Repositorys unter folgender Adresse installiert:

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

Details zur Zertifikaterstellung. Das Serverzertifikat wurde mithilfe der Lets Encrypt-Tool-Suite mit dem folgenden Befehl erstellt und installiert.

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

Ein Hinweis ist, dass es sich um ein Subdomain-Zertifikat handelt. ZB xxxx.domain.com.

UPDATE 2 Ich habe überprüft, ob die Zertifikate gültig sind und für den AMQPS-Teil des Problems funktionieren. Ich habe die Hauptkonfigurationsoption so geändert, dass sie enthält

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

Im angehängten Bild finden Sie einen Screenshot der SSL-fähigen Pika-Clients SSL Pika Client aktivieren

Brian Cain
quelle
1
Können Sie bitte angeben, wie Sie die Zertifikatdateien generiert haben? Nur für den Fall. Haben Sie versucht, dieses Zertifikat beispielsweise nur zu Testzwecken auf einem Webserver einzurichten?
Pierre-Alain TORET
@pat Ich habe die ursprüngliche Frage aktualisiert, um die Details darüber zu enthalten, wie die Zertifikate und Schlüssel alle generiert wurden. Um Ihre zweite Frage zu beantworten, ja. Auf dem Server, auf dem die RabbitMQ-Instanz ausgeführt wird, wird auch ein Webserver ausgeführt, auf dem die Gültigkeit des Zertifikats überprüft wurde.
Brian Cain
Vielen Dank, ich werde es später mit meinen letsencrypt-Zertifikaten versuchen. Ich melde mich bei dir.
Pierre-Alain TORET
Haben Sie versucht, die Zertifikate mit den openssl-Tools zu testen? Die rabbitmq-Dokumente enthalten sehr gute Ressourcen dazu: rabbitmq.com/troubleshooting-ssl.html
Andrew
Ich habe nicht. Ich werde versuchen, dies heute Abend zu überprüfen und mich mit den Ergebnissen bei Ihnen zu melden.
Brian Cain

Antworten:

4

Es gibt wirklich ein Problem mit RabbitMQ 3.2.4.

Ich habe genau die gleiche Konfiguration (wie Sie, zumindest den SSL-Teil) für Ubuntu 14.04( RabbitMQ 3.2.4und Erlang 16.b3) und / Ubuntu 15.10oder Centos 7(mit RabbitMQ 3.5.4und Erlang 18.0) vorgenommen.

Ich bekomme es in 3.5.4 zum Laufen und nicht in 3.2.4 {mochiweb_socket_server, 295, {acceptor_error, {error, accept_failed}}}. Ich kann noch keinen geöffneten Fehlerbericht finden, aber es ist sicherlich ein Problem im Zusammenhang mit dem Management-Plugin, da die Zertifikate in der neueren Version perfekt funktionieren.

Pierre-Alain TORET
quelle