添加SSL配置后Mosquitto MQTT服务重启失败

Mosquitto MQTT service failed to restart after adding SSL configuration

我正尝试在 Amazon EC2 Ubuntu 18 服务器上配置对我的 mosquitto bridrge 的 SSL 访问。我按照 mosquitto tls docs 中描述的步骤进行操作,最终得到以下文件:

  1. ca.crt
  2. ca.key
  3. ca.srl
  4. client.crt
  5. client.csr
  6. client.key
  7. server.crt
  8. server.csr
  9. server.key

在临时目录中。

然后我复制了三个文件:

sudo cp ca.crt /etc/mosquitto/ca_certificates/
sudo cp server.key /etc/mosquitto/certs/
sudo cp server.crt /etc/mosquitto/certs/

然后我在配置文件中添加了以下部分:

listener 8883
cafile /etc/mosquitto/ca_certificates/ca.crt
keyfile /etc/mosquitto/certs/server.key
certfile /etc/mosquitto/certs/server.crt

然后我想重启mosquitto:

sudo service mosquitto restart

这不起作用,响应为

> Job for mosquitto.service failed because the control process exited with error code.
> See "systemctl status mosquitto.service" and "journalctl -xe" for details.

我都试过了,只有信息说配置不对。

我尝试注释掉不同的行,下面的结构让服务重新启动:

listener 8883
cafile /etc/mosquitto/ca_certificates/ca.crt
keyfile /etc/mosquitto/certs/server.key
#certfile /etc/mosquitto/certs/server.crt

不幸的是,证书文件是配置工作所必需的。我检查了示例配置和文档,certfile 是一个合法的必需参数。

我该如何解决这个问题?

我在 运行Ubuntu 服务器上安装 Mosquitto。我 运行 也发现 Mosquitto 在添加 SSL 证书和配置后无法启动。我通过 Certbot 工具从 Let's Encrypt 获得了 standalone 证书。

版本信息: Ubuntu 18.04.5 LTS, 蚊子 2.0.4。 (MQTT v5.0/v3.1.1/v3.1 代理)和 Certbot 1.11.0.

在原始和失败的配置中,mosquitto 配置为使用 /etc/letsencrypt... 位置中的证书。

我的解决方案是 将所有证书文件从 /etc/letsencrypt/archive/ 移动到 /etc/mosquitto/ 文件夹中,并分别制作 mosquitto 配置中的证书文件指针指向此位置

在日志文件 /var/log/mosquitto/mosquitto.log 文件中提供了故障排除中问题的最相关调试。*

有关故障排除的更多信息

在这种情况下,玩弄所有权没有任何效果。 /etc/mosquitto/certs 文件夹中证书的最终配置有效,无论文件和证书所在文件夹的所有者是 mosquitto 还是 root。

我也尝试不使用 .../live/... 的符号链接,而是直接使用 /etc/letsencrypt/archive/... 位置中的文件进行测试,但没有用。

我没有检查是否是个别文件导致了问题,只是将它们全部移动了。之后尝试从 ..mosquitto/certs 其中一个文件进行符号链接,只是注意到 mosquitto 将无法启动。对于 运行 的服务器设置,我需要 将证书文件保存在 ...mosquitto/certs 文件夹中