引言
Mqtt 是一种机对机的消息传递协议,旨在为物联网设备提供轻量级的发布/订阅通信。 它通常用于车辆的地理跟踪车队,家庭自动化,环境传感器网络,和公用事业规模的数据收集。
Mosquito 是一个流行的 MQTT 服务器(或者用 MQTT 的说法是代理) ,它有很好的社区支持,并且易于安装和配置。
在本教程中,我们将安装 mosquito,从 Let’s Encrypt 检索 SSL 证书,并将代理设置为使用 SSL 来保护受密码保护的 MQTT 通信。
先决条件
在开始本教程之前,你需要:
设置了一个 CentOS 7服务器,该服务器具有一个非 root、支持 sudo 的用户和一个基本的防火墙。 新 CentOS 7服务器检查列表中包含了所有这些(以及更多)。
一个域名指向你的服务器,就像如何用 DigitalOcean 设置主机名一样。 本教程将在整个过程中使用 mqtt.example.com。
还可以选择使用纳米文本编辑器。 本教程将使用 nano 贯穿始终,你可以在任何时候用 sudo yum-y 安装 nano 安装它,或者替换你喜欢的文本编辑器。
第一步ー安装蚊子
缺省情况下 CentOS 7没有一个需要打包的蚊子。 为了安装它,我们将首先安装一个额外的 Linux 软件资源库,称为企业 Linux 的额外软件包,或者称为 EPEL。 这个存储库充满了可以很好地安装在 CentOS、 Red Hat 和其他面向企业的 Linux 发行版上的附加软件。
使用非 root 用户登录并使用 yum 包管理器安装 epel-release 包。
sudo yum -y install epel-release
这将向我们的系统添加 EPEL 存储库信息。 Y 选项会自动对整个过程中的几个提示回答 yes。 现在我们可以安装蚊子包。
sudo yum -y install mosquitto
这个包有一个简单的默认配置,所以让我们运行它来测试我们的安装。
sudo systemctl start mosquitto
我们还需要启用该服务,以确保在重新启动系统时启动:
sudo systemctl enable mosquitto
现在让我们测试默认配置。 Mosquito 包附带了一些命令行 MQTT 客户机。 我们将使用其中一个订阅我们代理的主题。
主题是发布邮件到并订阅的标签。 它们被安排成一个层次结构,例如,你可以有传感器 / 外部 / 温度和传感器 / 外部 / 湿度。 如何安排话题取决于你自己和你的需要。 在本教程中,我们将使用一个简单的测试主题来测试我们的配置更改。
第二次登录到您的服务器,这样您就有两个并排的终端。 在新的终端,使用蚊子子订阅测试主题:
mosquitto_sub -h localhost -t test
H 用于指定 MQTT 服务器的主机名,-t 是主题名。 你会看到没有输出后,按下 ENTER,因为蚊子子正在等待消息到达。 切换回你的另一个终端并发布一条消息:
mosquitto_pub -h localhost -t test -m "hello world"
蚊子到酒吧的选项是相同的蚊子到次,虽然这一次我们使用额外的-m 选项,以指定我们的信息。 点击回车,你应该会看到 hello world 在另一个终端弹出。 您已经发送了您的第一条 MQTT 消息!
在第二个终端输入 ctrl + c 以退出 mosquito 子,但保持到服务器的连接打开。 我们将在第5步中再次使用它进行另一个测试。
接下来,我们将使用 Certbot (新的 Let’s Encrypt 客户机)使用 SSL 保护我们的安装。
步骤2ー为 Let’s Encrypt 证书安装和运行 Certbot
Let’s Encrypt 是一个通过自动化 API 提供免费 SSL 证书的新服务。 官方的 Let’s Encrypt 客户机名为 Cert