保护Mosquitto服务器的安全
了解如何加密数据以便通过MQTT传输。 我们将使用Mosquitto MQTT Server进行IoT协议安全性的此实验。
这篇文章描述了如何实现MQTT安全性。我们将更详细地描述如何保护Mosquitto MQTT服务器。您可能已经知道,MQTT是在IoT和IIoT中广泛使用的最重要的协议之一。 MQTT是一种轻量级的,面向消息传递的协议,其中MQTT客户端通过称为MQTT代理的MQTT服务器交换消息。我们在我的MQTT协议教程中介绍了MQTT的所有这些方面。
在本文中,我们要特别关注与MQTT Mosquitto安全相关的方面,以面对MQTT安全方面。
一般而言,物联网是即将到来的技术革命,其中称为智能对象的对象连接到Internet —交换数据和信息。关于物联网的主要关注之一是安全方面。考虑到物联网将影响我们的日常生活,并且这些智能对象能够获取和收集各种信息,因此安全性是重要的方面。其中一些信息是敏感的(我们可以考虑健康数据),因此重要的是确保除允许的人员和系统之外,没有其他人可以使用它。
在这种情况下,了解如何保护MQTT协议以及如何保护您的信息非常重要。在接下来的段落中,我们将分析使用Raspberry Pi作为MQTT代理来保护MQTT所必须遵循的步骤。
1.MQTT安全性是指什么?
从本质上讲,MQTT是一个简单的协议。 交换的所有信息均为纯文本格式。 换句话说,任何人都可以访问此消息并读取有效负载。
当然,在几种用例中,我们希望保持信息的私密性,并保证在传输过程中不能读取或修改它。 在这种情况下,我们可以使用几种方法来解决MQTT安全性问题:
- 在客户端和服务器之间创建VPN。
- 使用基于SSL/TLS的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位密钥。 结果如下图所示:

下一步是创建一个X509证书,该证书使用上一步中生成的私钥。 再次打开终端,并在用于存储私钥的目录中输入:
openssl req -new -x509 -days365 -key mosq-ca.key -out mosq-ca.crt
在此步骤中,您必须在创建证书之前提供不同的信息,如下图所示:

创建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 -textjavascript:void(0)
现在您应该看到证书了。
如何配置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/TLS测试MosquittoMQTT安全性
在此步骤中,我们将验证连接是否正确配置。 为此,我们使用基于Java的MQTT客户端MQTT.fx。 安装后,我们必须创建一个新的配置文件,以提供所有信息,如下图所示:

请注意,我们已启用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
结果如下图所示:

在订阅端,我们有:

如您所见,我们收到了发布者发送的消息。
1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!3187589@qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
SO资源 » 保护Mosquitto服务器的安全