docker+mqtt+tls+go+kafka

一、为什么需要配置TLS的MQTT服务器?

1.因为配置了TLS的MQTT服务器,可以使得传输数据更安全,满足部分对此需求的客户。

二、如何配置TLS的MQTT服务器?

1.首先在本地电脑搭建openssl环境,具体操作可以参见该博客搭建openssl环境
2.先区分什么是对称加密和非对称加密,这对理解TLS很关键;对称加密原理是加密解密都使用同一个密钥,而非对称加密是加密和解密使用不同的密钥。
我们需要部署的是使用非对称加密,既公钥加密数据,然后私钥解密的情况被称为加密解密,私钥加密数据,公钥解密一般被称为签名和验证签名。
3.接下来就是使用openssl生成私钥和公钥,具体操作可以参见该博客openssl生成证书
在这需要重点提醒,我们使用openssl会生成一个CA根证书,再使用CA根证书生成客户端和服务端的私钥和公钥。(私钥是xxx.key,公钥是xxx.crt)

三、TLS的工作原理是什么?

1.客户端需要加载根证书请求连接服务端,请求内容里包括发送自己的公钥(以证书的形式存储),等待服务端校验对方的证书公钥是否合法(与自己的根证书匹配),校验通过后
服务器加载根证书、发送自己的公钥(存放在证书里)给请求连接的客户端,此时双方正式建立通讯连接,之后双方通讯都是使用对方的公钥证书进行加密发送数据、使用自己的私钥解密接收的数据。
如果不理解可以参阅该博客TLS原理

四、证书生成和原理弄明白了,如何搭建MQTT的TLS?并使用桥接程序订阅消息转发至Kafka?

1.先声明本人是在Docker下进行搭建的,可以直接在docker拉取镜像
sudo docker pull toke/mosquitto
2.配置MQTT的配置文件,如果不是很清楚原理,强烈建议去看mosquitto源码里的配置文件说明英文版
链接:官方mosquitto.conf文件
提取码:gvgv

配置MQTT,使用TLS双向认证机制,配置了用户和密码以及用户权限

3.在docker上运行MQTT服务器命令如下:
sudo docker run --name eclipse-mosquitto -it -d -v /mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf -v /mosquitto/ca:/mosquitto/ca -v /mosquitto/config/pwfile:/mosquitto/config/pwfile -v /mosquitto/config/aclfile:/mosquitto/config/aclfile -p 1883:1883 -p 8883:8883 eclipse-mosquitto
具体docker命令不清楚的可以自行Google一下。该命令指后台运行eclipse-mosquitto镜像,-v表示把系统路径下的文件或者文件夹映射到镜像指定的路径下,例如-v /mosquitto/ca:/mosquitto/ca 表示将系统下的/mosquitto/ca文件夹映射到镜像/mosquitto/ca路径下。
4.在windows下,使用MQTT.fx客户端代理工具进行验证服务器是否搭建成功,具体配置如下图:
在这里插入图片描述

配置证书路径

5.至此完成MQTT之TLS服务器搭建。

五、如何编写桥接程序完成订阅消息并转发到Kafka?
分别参考了https://blog.csdn.net/kdpujie/article/details/79093595
https://docs.emqx.cn/broker/v4.2/development/go.html#mqtt-go-使用示例
最终我本地代码如下链接:我的代码
提取码:gvgv

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值