在服务器上运行 Ubuntu 22.04,在客户端上运行 MacOS。
使用以下内容设置 mosquitto.conf:
allow_anonymous false
password_file /etc/mosquitto/passwd
listener 1883
listener 8883 0.0.0.0
protocol mqtt
certfile /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/example.com/example.com.crt
cafile /usr/local/share/ca-certificates/lets-encrypt-r3.crt
keyfile /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/example.com/example.com.key
allow_anonymous false
使用 MQTT 资源管理器连接到服务器使用我在我的
passwd
文件中建立的用户/密码。
mosquitto.log 文件显示如下:
1680357916: New connection from 2.3.4.5:61585 on port 8883.
1680357917: New client connected from 2.3.4.5:61585 as mqtt-explorer-e65374de (p2, c1, k60, u'user').
我的问题是,有没有办法验证此连接使用的是 TLS 而不是由于一些静默握手错误而退回到未加密状态?
这样不行,如果你在端口 8883 上连接,它将使用 TLS 或连接失败。
如果您想完全确定没有人可以使用 TLS 进行连接,那么您可以将
listener 1883
更改为 listener 1883 127.0.0.1
然后只有与代理位于同一台计算机上的客户端才能连接到未加密的端口。