使用 TLS 保护 arduino 到 mosquitto 的连接

Securing arduino to mosquitto connection with TLS

我正在尝试通过 TLS 保护 arduino pubsub 客户端和 mosquitto 代理(在 public 服务器上的 运行 之间的连接)。

通常(在 windows 等),我可以在提供证书文件时像下面那样 publish/subscribe。 (证书和密钥文件在我的工作目录中)。

mosquitto_pub -h myhost.com -p 8883 -t "/test" -m "your secure message" --cafile ca.crt --cert client.crt --key client.key

mosquitto_sub -h myhost.com -p 8883 -t "/test" --cafile ca.crt --cert client.crt --key client.key

但是在arduino中有没有办法做到这一点?

不要认为普通的 arduino 板有可用的加密,至少我没有看到。不过,有一些解决方法,要么您使用另一端没有加密的代理(连接到 arduino),然后在另一端使用加密(连接到 public 代理)。

另一种选择是使用在 linux 上运行的开发板,然后从 arduino 代码调用 mosquitto 命令。这是英特尔爱迪生板的示例:https://software.intel.com/en-us/blogs/2015/04/06/using-edison-securely-connect-iot-sensor-to-the-internet-with-mqtt

您的 pubsub MQTT 客户端不支持开箱即用的 SSL/TLS。您可以尝试与一些轻量级 SSL/TLS 库集成。

很少有嵌入式 SSL 库:
https://wolfssl.com/wolfSSL/Products-wolfssl.html
http://www.matrixssl.org/

或者您可以选择 Paho MQTT Client - MQTTClient 的预构建 Arduino 端口。它支持 MQTT V3.1.1、SSL/TLS、QOS-2 Support 等,这些在 pubsub 客户端中不可用。