我一直尝试将 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\"}}"
我是否使用正确的文件或者我是否遇到了更深层次的问题?
更新证书生成详细信息:通过克隆以下 git 存储库来安装 Lets encrypt:
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}]}
答案1
确实存在问题RabbitMQ 3.2.4
。
Ubuntu 14.04
我对(RabbitMQ 3.2.4
和Erlang 16.b3
)和Ubuntu 15.10
或Centos 7
(具有RabbitMQ 3.5.4
和)进行了完全相同的配置(与您一样,至少是 SSL 部分)Erlang 18.0
。
我在 3.5.4 中可以运行,但在 3.2.4 中却不行 {mochiweb_socket_server,295,{acceptor_error,{error,accept_failed}}}。我还没有找到任何已打开的错误报告,但这肯定是与管理插件相关的问题,因为证书在较新的版本中可以完美运行。