MQTT安全性:保护Mosquitto服务器的安全

这篇文章描述了如何实现MQTT安全性 更详细地,我们将描述如何保护Mosquitto MQTT服务器。 众所周知,MQTT是物联网和工业物联网中广泛使用的最重要的协议之一。 MQTT是面向轻量级消息传递的协议,其中MQTT客户端通过称为MQTT代理的MQTT服务器交换消息。 在上一篇名为“ MQTT协议教程 ”的文章中,我们讨论了有关MQTT的所有方面。

在本文中,我们要特别关注与MQTT Mosquitto安全相关的方面,以面对MQTT安全方面。

一般而言,物联网是即将到来的技术革命,其中称为智能对象的对象连接到可以交换数据和信息的互联网。 关于物联网的主要关注之一是安全性。 考虑到物联网将影响我们的日常生活,并且这些智能对象能够获取和收集各种信息,因此安全性是一个重要方面。 其中一些信息是敏感的(我们可以考虑健康数据),因此重要的是确保除允许的人员和系统之外,没有其他人可以使用它。

在这种情况下,了解如何保护MQTT协议以及如何保护信息非常重要。 在接下来的段落中,我们将分析使用Raspberry Pi作为MQTT代理来保护MQTT所必须遵循的步骤。

MQTT安全意味着什么?

从本质上讲,MQTT是一种简单协议,所有交换的信息都是纯文本格式。 换句话说,每个人都可以访问此消息并读取有效负载。 如果MQTT客户端和MQTT代理交换不明智的信息,这可能不是问题。 无论如何,在几种使用案例中,我们希望保持信息的私密性,并保证在传输过程中不会读取或修改该信息。 在这种情况下,我们可以使用几种方法来解决MQTT安全性问题:

  1. 在客户端和服务器之间创建VPN
  2. 使用基于SSL / TSL的MQTT来加密和保护MQTT客户端和MQTT代理之间的信息

我们将集中精力于如何在SSL上创建MQTT 为了使MQTT成为安全协议,我们必须遵循以下步骤:

  • 创建私钥(CA密钥)
  • 使用私钥生成证书(CA证书)
  • 使用密钥为Mosquitto MQTT服务器创建证书

最后一步是配置Mosquitto MQTT,以便它使用这些证书。

保护MOSQUITTO MQTT服务器

此过程的第一步是创建私钥。 根据需要使用ssh或远程桌面连接到Raspberry Pi,然后打开命令终端。 在开始之前很重要,请检查Raspberry Pi中是否已安装OpenSSL,否则,您必须从此处下载。

在创建私钥之前,您应该创建一个目录,用于存储要创建的所有证书。 在终端中输入:

openssl genrsa -out mosq-ca.key 2048

使用此命令,我们将创建一个称为mosq-ca.key的2048位。 结果如下图所示:

nex步骤是使用上一步中生成的私钥创建X509证书。 再次打开终端,并在用于存储写私钥的目录中打开:

openssl req -new -x509 -days365 -key mosq-ca.key -out mosq-ca.crt

在此步骤中,您必须在创建证书之前提供不同的信息,如下图所示:

MQTT安全性:保护Mosquitto服务器的安全_第1张图片

创建MQTT服务器证书

准备好私钥和证书后,我们可以继续创建MQTT服务器证书和私钥:

openssl genrsa -out mosq-serv.key 2048

然后是服务器证书。 在此步骤中,我们必须创建一个CSR(证书签名请求)。 该证书应发送给证书颁发机构,由其验证作者身份后返回证书。 在本教程中,我们将使用自签名证书:

openssl req -new -key mosq-serv.key -out mosq-serv.csr

如您所见,我们使用了之前步骤中生成的私钥。 最后,我们可以创建在MQTT Mosquitto服务器中使用的证书:

openssl x509 -req -in mosq-serv.csr -CA mosq-ca.crt -CAkey mosq-ca.key -CAcreateserial -out mosq-serv.crt -days 365 -sha256

全做完了! 我们已经完成了确保MQTT服务器安全的必要步骤。 您可以验证您的证书写法:

openssl x509 -in mosq-serv.crt -noout -text

现在您应该看到证书。

如何配置MQTT MOSQUITTO服务器以确保MQTT安全

证书准备好后,我们必须配置MQTT Mosquitto服务器,以便它可以使用这些证书。 我们必须使用的证书是:

  • mosq-ca.crt
  • mosq-serv.crt
  • mosq-serv.key

找到包含所有配置参数的mosquitto.conf文件,并添加以下行:

listener 8883
cafile /home/pi/ssl-cert-mosq/mosq-ca.crt
certfile /home/pi/ssl-cert-mosq/mosq-serv.crt
keyfile /home/pi/ssl-cert-mosq/mosq-serv.key

路径/ home / pi / ssl-cert-mosq是您存储证书的路径。 此外,我们将默认的Mosquitto MQTT端口更改为8883。

现在,您必须停止并重新启动Mosquitto MQTT,以便它可以读取新的配置文件:

sudo service mosquitto stop/start

就这样。 现在,我们的MQTT协议是安全和加密的。 最后一步是测试配置和MQTT服务器。

通过SSL / TSL进行MQTT安全测试的蚊子

在此步骤中,我们将验证连接是否正确配置。 为此,我们使用MQTT。 FX一个基于Java的MQTT客户端。 安装后,我们必须创建一个新的配置文件,以提供所有信息,如下图所示:

MQTT安全性:保护Mosquitto服务器的安全_第2张图片

请注意,我们已启用SSL / TSL配置,从而提供了在前面的步骤中创建的mosq-ca.crt。

最后,我们可以连接到MQTT Mosquitto服务器:

单击连接。 您会注意到,MQTT客户端将建立与MQTT代理的连接,您可以在“日志”选项卡中进行检查。

现在是时候测试我们的客户是否收到消息了。 选择订阅菜单,然后为MQTT客户端订阅主题(选择主题名称)。

在Raspberry Pi方面,我们可以在同一频道上发送消息:

mosquitto_pub -p 8883 -t "test" -cafile mosq-ca.crt -m "Hello MQTT" -d -h 192.168.1.8

结果如下图所示:

在订户端,我们有:

MQTT安全性:保护Mosquitto服务器的安全_第3张图片

如您所见,我们收到了发布者发送的消息。

结论

在本文的最后,您获得了有关如何处理SSL / TSL上的MQTT安全性配置Mosquitto MQTT的知识。

翻译自: https://www.javacodegeeks.com/2017/09/mqtt-security-securing-mosquitto-server.html

你可能感兴趣的:(MQTT安全性:保护Mosquitto服务器的安全)