【问题标题】:RabbitMQ management ui ssl keyfile invalidRabbitMQ 管理 ui ssl keyfile 无效
【发布时间】:2020-04-13 11:01:16
【问题描述】:

您好,我正在使用 Let's Encrypt 为部署在 Azure VM 中的 Dockerized RabbitMQ 生成 SSL 证书。使用 certbot 生成证书后,我在名为 certs 的文件夹中获得了 cert.pemchain.pemfullchain.pemprivkey.pem

之后,我编写了一个 Dockerfile Dockerfile 来基于现有的 RabbitMQ docker 镜像构建 docker 镜像,如下所示

FROM rabbitmq:3.8-management-alpine
RUN rabbitmq-plugins enable rabbitmq_web_stomp
COPY rabbitmq.conf /etc/rabbitmq/rabbitmq.conf
VOLUME ["/home/rabbitmq/certs"]

另外,我的rabbitmq.conf

loopback_users.guest = false
listeners.tcp.default = 5672
default_pass = rabbitmq_admin
default_user = rabbitmq_admin
management.tcp.port = 15672
management.ssl.port       = 15671
management.ssl.cacertfile = /home/rabbitmq/certs/chain.pem
management.ssl.certfile   = /home/rabbitmq/certs/cert.pem
management.ssl.keyfile    = /home/rabbitmq/certs/privkey.pem

然后我用

构建rabbitmq docker镜像

docker build -t rabbitmq:3.8-ssl .

为了运行镜像,我使用 docker compose 文件作为

version: '3'
services:
  rabbitmq:
    image: rabbitmq:3.8-ssl
    container_name: rabbitmq
    volumes:
       - ./certs:/home/rabbitmq/certs
    deploy:
      resources:
        limits:
          cpus: '0.30'
          memory: 300M
    ports:
      - 4369:4369
      - 5671:5671
      - 5672:5672
      - 15671:15671
      - 15672:15672
      - 15673:15673
      - 15674:15674
      - 25672:25672
    hostname: rabbitmq
    environment:
      - RABBITMQ_DEFAULT_USER=rabbitmq_admin
      - RABBITMQ_DEFAULT_PASS=rabbitmq_admin

但是,当我跑步时

docker-compose up

我明白了

Recreating rabbitmq ... done
Attaching to rabbitmq
rabbitmq      |
rabbitmq      | BOOT FAILED
rabbitmq      | ===========
rabbitmq      |
rabbitmq      | Config file generation failed:
rabbitmq      | 23:02:13.719 [error] management.ssl.keyfile invalid, file doesn/t exist or isn't     readable
rabbitmq      | 23:02:13.728 [error] Error generating configuration in phase validation
rabbitmq      | 23:02:13.728 [error] management.ssl.keyfile invalid, file doesn/t exist or isn't     readable
rabbitmq      | In case the setting comes from a plugin, make sure that the plugin is enabled.
rabbitmq      | Alternatively remove the setting from the config.
rabbitmq      |
rabbitmq      | {"init terminating in do_boot",generate_config_file}
rabbitmq      | init terminating in do_boot (generate_config_file)
rabbitmq      |
rabbitmq      | Crash dump is being written to: /var/log/rabbitmq/erl_crash.dump...done
rabbitmq exited with code 0

如果证书有问题,我部署了一个具有相同证书的 nginx Web 服务器(cert.pemprivkey.pem,好像 nginx 不需要 chain.pem)并且运行良好。我可以从chrome上看到证书是有效的。

谁能帮忙看看有什么问题?

谢谢

【问题讨论】:

  • 您的私钥密码是否受保护...
  • 不,它是由 Let's encrypt 生成的,所以没有使用密码。当Web服务器(nginx)使用相同的privkey.pem时,没有指定密码并且可以正常工作。
  • 我也面临这个问题..有什么帮助吗?

标签: ssl rabbitmq lets-encrypt


【解决方案1】:

我今天遇到了这个问题。最终结果正如错误所说,rabbitmq 由于权限而无法查看证书。你可以通过运行来测试

sudo su -l rabbitmq -s /bin/bash

然后尝试查看证书。

rabbitmq@ip-10-0-0-22:~$ cat /etc/letsencrypt/live/www.example.com/fullchain.pem
cat: /etc/letsencrypt/live/www.example.com/fullchain.pem: Permission denied

如果您查看该文件,您会发现它已符号链接到存档文件夹,因此仅在“实时”上设置权限是不够的。

为了解决这个问题,我运行了两个命令来将目录设置为可读。

chmod ugo+rx /etc/letsencrypt/live/

【讨论】:

  • 有趣...我可以以rabbitmq 用户的身份查看文件的内容,但仍然出现上述错误。我有一个与原始问题中描述的非常相似的 Docker 设置。
猜你喜欢
  • 1970-01-01
  • 2022-08-02
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
  • 2018-03-19
相关资源
最近更新 更多