我正在尝试设置一个使用 ssl/tls 加密的 mosquitto 代理。我不想生成客户端证书。我只想要一个加密连接。
手册页仅描述了可用的设置,没有描述需要哪些设置以及如何使用它们。
需要哪些设置以及如何设置它们?
我用的是蚊子1.3.5
这里有一个小指南,但没有说太多:http://mosquitto.org/man/mosquitto-tls-7.html
您需要设置这些:
证书文件
密钥文件
卡菲莱
它们可以使用上面链接中的命令生成。但更简单的是使用这个脚本:https://github.com/owntracks/tools/blob/master/TLS/generate-CA.sh
运行脚本并更改配置后,它可能看起来像这样:
listener 8883
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/hostname.localdomain.crt
keyfile /etc/mosquitto/certs/hostname.localdomain.key
如果蚊子说Unable to load server key file
这意味着运行 mosquitto 的用户没有读取该文件的权限。即使您以 root 身份启动它,代理也可能以其他用户身份启动,例如 mosquitto。要解决这个问题,请执行以下操作:chown mosquitto:root keyfile
要连接到代理,客户端将需要 ca.crt 文件。如果您不提供此信息,经纪人会说:
OpenSSL 错误:错误:1408F10B:SSL 例程:SSL3_GET_RECORD:版本号错误
将其提供给您使用的 mosquitto_sub 命令--cafile pathToCaCrt
。 ca.crt 可以与客户端一起分发,它将确保它连接到的服务器实际上是正确的服务器。
The --insecure
mosquitto_sub 标志并不使客户端接受所有证书(如 wget 或类似证书),它只是允许证书不具有您要连接到的通用名称的主机。因此,您应该确保您的证书将您的代理主机作为通用名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)