【问题标题】:Securing arduino to mosquitto connection with TLS使用 TLS 保护 arduino 到 mosquitto 的连接
【发布时间】:2016-06-20 07:36:47
【问题描述】:

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

通常(在 Windows 等上),我可以在提供证书文件时像下面这样发布/订阅。 (证书和密钥文件在我的工作目录中)。

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 中做到这一点?

【问题讨论】:

  • mosquitto 客户端不在 arduino 上运行,您是指来自这里的 pubsub 客户端pubsubclient.knolleary.net
  • 您使用的是哪个硬件/Arduino?例如,Uno 没有运行完整 TLS 的内存。虽然它有可能被卸载到网络芯片上,如果使用像 ESP8288 这样的东西。
  • 我使用的是 Sam3x8e 芯片。谢谢! :)
  • @hardillb 是的... :) :)

标签: ssl arduino client mqtt mosquitto


【解决方案1】:

您的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客户端不支持。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 是的,我也四处寻找,但找不到方法。 :( :( 感谢您的回答!:)
    最近更新 更多