2

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

  1. ca.crt
  2. 密钥
  3. ca.srl
  4. 客户端.crt
  5. 客户端.csr
  6. 客户端密钥
  7. 服务器.crt
  8. 服务器.csr
  9. 服务器密钥

在临时目录中。

然后我复制了三个文件:

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

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

我该如何解决这个问题?

4

1 回答 1

3

我在 Ubuntu服务器上运行Mosquitto 。添加 SSL 证书和配置后,我还遇到了 Mosquitto 无法启动的问题。我从Let's Encrypt by Certbot工具获得了独立证书。

版本信息: Ubuntu 18.04.5 LTS、Mosquitto 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 文件夹中”

于 2021-01-10T09:59:38.920 回答