保护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位密钥。 结果如下图所示:

mosq-ca.key
mosq-ca.key

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

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

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

创建X509证书
创建X509证书

创建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。 安装后,我们必须创建一个新的配置文件,以提供所有信息,如下图所示:

Mosquitto SSL 证书
Mosquitto SSL 证书

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

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

mqtt ssl profile
mqtt ssl profile

单击连接。 您会注意到,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加密消息
MQTT加密消息

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

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

SO资源 » 保护Mosquitto服务器的安全