首先转到 /etc/mosquitto/certs 并发出以下命令:
sudo openssl req -x509 -newkey rsa:1024 -keyout ca.crt -out cert.crt -days 9999
然后,您将被邀请填写一些详细信息,如下面的屏幕截图所示,关于证书的所有者,例如居住国家,州,公司,城市,电子邮件地址,最重要的是完全合格的域名(FQDN Fully Qualified Domain Name)。如果您没有域名,则需要是您的服务器域或服务器IP地址:
当您被问及密码短语时,您需要输入一个超过四个字符的密码短语。别担心,在下一步中我们将从证书中删除它。
上述命令的结果应该是位于 /etc/mosquitto/certs 中的两个文件目录:
以下命令将删除先前的密码并生成新文件:
sudo openssl rsa -in ca.crt -out newca.pem
此命令的输入文件是 ca.crt,它将生成一个文件名 newca.pem,并删除了密码。我们可以在以下屏幕截图中看到这一点:
最后,/etc/mosquitto/certs 中应该有三个文件:
注意:在 mosquitto 配置中,您只需要三个文件中的两个 cert.crt 和 newca.pem 确保 ca.crt 安全地存储在服务器之外。确保只有mosquitto 用户访问证书。生产中的 mosquitto 代理也应该由 mosquitto 用户启动而不是 root 用户
既然您拥有了证书的正确文件,那么让我们配置 mosquitto 来考虑它们。如果您希望有两个非安全端口(例如1883)和WebSockets 连接的 9004,则可以添加 8883 作为安全端口,将 9883 添加为 WebSocket Secure(WSS)端口。
要配置 mosquitto,您需要编辑位于 /etc/mosquitto/ 中的配置文件 mosquitto.conf ,文件的新内容应该是:
使用以下命令重新启动mosquitto服务以使用新配置启动:
sudo service mosquitto restart
现在你可以通过查看 /var/log/mosquitto/mosquitto.log 来检查 mosquitto 是否已正确启动并且你在 mosquitto.conf 中有没有错误:
如果没有错误,您可以继续将客户端连接到新的安全端口。