您当前的位置:首页 > 电脑百科 > 站长技术 > 网站

使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

时间:2021-04-12 10:57:29  来源:今日头条  作者:嵌入式笔记v
使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

为什么要使用ssl加密通讯

随着互联网快速发展,网络安全越来越得到人们的关注。谁都不想自己的数据被人窃听或利用,而当我们直接使用TCP连接一个服务器通讯时,此时是明文传输的,很容易使用抓包工具(如wireshark)抓取我们的数据包,从而分析出相关的数据。比如我们直接登陆mqtt服务器,数据报文中就包括了登陆账号,密码,ClientID等等信息,如果“坏人”捕捉到这些信息,那他就可以连接我们的服务器,显然这不是我们想要的结果。

使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

SSL就是解决其问题的一种方案。即我们可以在我们的应用程(HTTP, MQTT, FTP)与传输层(这里主要是TCP)之间加一级SSL加密传输。细心的小伙伴可以发现现在绝大多数的网站都已经采用了这种方式加密通信,从以前的http悄悄的变成了https咯~

使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

证书和SSL的关系

使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

证书其实是SSL中通讯过程基本保障,用来验证服务器或客户端是否是可信任的(这里大家可以联想下我们在银行办理网上银行时,通常银行会给我们一个类似“K宝”的小东西,其作用就是客户端证书,当我们登陆银行网站交易时,网站会验证我们是否可信任,否则不允许登陆或后续交易操作)。且公证的证书(证书机构颁发的,如CA机构)有效的防止他人仿造,保障了通讯过程的安全。而这里我们自己制作的自签证书,仅供自己使用,并不是公认的。好了,暂时先说这么多。OK,开始进入我们的主题。

使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

实践操作

这里需要我们的测试环境的Ubuntu系统,已经默认安装Openssl了,如果大家没装的话,可以使用apt-get install openssl相关命令安装即可。

1. 生成CA私钥。 这里我们自己“假装”是CA机构,当然需要CA证书,私钥拉,不然咋给其他人办理业务勒~

openssl genrsa -out ca-key.pem 1024
使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

2. 创建证书请求。 证书请求是生成证书必要过程,请求中就包含了所属城市,单位,机构,组织,公共名等等信息。

openssl req -new -out ca-req.csr -key ca-key.pem
使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

3. 自签署(CA)证书,也叫根证书。之后就可以给“其他人”办理业务咯。

openssl x509 -req -in ca-req.csr -out ca-cert.pem -signkey ca-key.pem -days 3650
使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 


以下是生成服务器证书过程,其实过程和以上生成CA证书完全一样。

4. 生成服务器私钥

openssl genrsa -out server-key.pem 1024   
使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

5. 生成服务器证书请求文件

openssl req -new -out server-req.csr -key server-key.pem
使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

注意: 在Common Name必须填写自己的服务器IP地址(或域名)。

  1. 将请求文件给CA 机构(这里是俺们自己~)生成服务器证书
openssl x509 -req -in server-req.csr -out server-cert.pem -signkey server-key.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -days 3650
使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 


以下是生成客户端证书过程:

7. 生成客户端私钥

openssl genrsa -out client-key.pem 1024   
使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

8. 生成证书请求

openssl req -new -out client-req.csr -key client-key.pem
使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

9. 自签署证书

openssl x509 -req -in client-req.csr -out client-cert.pem -signkey client-key.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -days 3650
使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 


OK, 到这里我们已经完成了服务器和客户端的证书(完全是个体力活 - -!), 接下来我们就利用我们生成的证书应用于实践中,这里我们采用EMQ(MQTT服务器,如果小伙伴不清楚如何搭建自己MQTT客户端的话,可以我参考我前几篇的文章的介绍,这里就不再赘述) + mqttfx(MQTT客户端)方式来测试。

10. 拷贝生成服务器证书(server-cert.pem)和私钥(server-key.pem),到emq工作目录下的/emqx/etc/certs/中,

cp server-cert.pem server-key.pem  ../emqx/etc/certs/
使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

11. 打开emqx/etc中的emqx.conf配置文件

使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

找到
listerner.ssl.external.keyfile 
listener.ssl.external.certfile这2个参数:

使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

这里我们可以看到默认值与我们生成的名字对不上,我们可以直接更改emqx.conf配置文件中的值与我们的一致, 另外我们也可以保持emqx.conf文件不变,修改我们制作的证书和私钥名字,与之一样(这里我们采用该种方式,尽量保持emqx原生文件不变)。使用mv命令修改:

mv server-cert.pem cert.pem
mv server-key.pem key.pem
使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

12. 将Ubuntu中制作的CA和客户端相关证书,密钥拷贝到windows中(这是因为之后我们要利用Windows中的mqttfx客户端测试)。

cp c* /mnt/hgfs/winshare/my_cert/                //winshare是我的Ubuntu和Windows共享文件夹
使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

13. 打开mqttfx客户端

使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

首先点击“User Creentials”设置服务器地址,端口号(emq加密ssl端口默认为8883),登陆用户名,密码(如果emq关闭匿名登陆则必须填写正确的用户名和密码,如果打开匿名登陆,则可以不管)等信息。

使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

然后点击1)“SSL/TLS”, 进行相关配置:

2)勾选"Enable SSL/TLS"

3) 勾选“Self signed certificates”

4)分别加载我们之前生成的CA证书,客户端证书,客户端私钥

5)勾选“PEM Formatted”

使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

设置完以上,点击“Apply”或OK,回到主界面,点击“Connect”连接我们Ubuntu中emq服务器

使用Openssl制作自签证书,并应用于自己MQTT服务器通讯

 

之后,我们就可以放心与服务器加密通讯咯。

最后

至此我们已经实现了搭建自己的MQTT服务器,以及加密通讯,为我们之后智能设备对接服务器,进行远程控制做好准备工作。如果小伙伴对如何搭建MQTT服务器不熟悉的话,可以参考我的这篇文章物联网之MQTT服务器搭建。因为考虑篇幅,今天很笼统说了下ssl和证书,并没有很详细的铺开讲述, 这篇文章注重实践操作,如果小伙伴对证书的产生的原由感兴趣,欢迎留言,后续我可以补一篇理论文章。 好了,今天的分享至此,欢迎小伙伴关注,收藏,转发哟~



Tags:自签证书   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
为什么要使用ssl加密通讯随着互联网快速发展,网络安全越来越得到人们的关注。谁都不想自己的数据被人窃听或利用,而当我们直接使用TCP连接一个服务器通讯时,此时是明文传输的,...【详细内容】
2021-04-12  Tags: 自签证书  点击:(333)  评论:(0)  加入收藏
▌简易百科推荐
今天我们来聊一下北京地区的《ICP经营许可证》有多好办,现在的互联网上提供的商机越来越多,增值电信业务十分火爆,企业通过互联网突破地域的限制,把公司产品卖到更远的地方,同时...【详细内容】
2021-12-17  梦想理应飞翔Yy    Tags:《ICP经营许可证》   点击:(12)  评论:(0)  加入收藏
转自: https://blog.kermsite.com/p/blog-intro/由于格式问题,部分链接、表格可能会失效,若失效请访问原文此专题将详细介绍如何从零开始搭建一个个人博客。Dec 01, 2021阅读时...【详细内容】
2021-12-17  LaLiLi    Tags:个人博客   点击:(6)  评论:(0)  加入收藏
SP证是第二类增值电信业务经营许可证的简称。分为全网SP证和地网SP证。申请经营许可证是在工信部申请,全网SP经营许可证的有效期是5年,全网SP许可证在工信部办理全网SP续期,地...【详细内容】
2021-11-01  s陳述    Tags:sp证书   点击:(38)  评论:(0)  加入收藏
现在还有许多人不知道EDI许可证是什么东西今天我就来给大家讲解一下.EDI许可证就是一种增值电信业务经营许可证。是针对在线数据处理和交易处理业务需求的专业资格证书。 《...【详细内容】
2021-10-28  soberXx    Tags:edi许可证   点击:(75)  评论:(0)  加入收藏
元素的化学概念,如周期表中的化学元素,一切物质都是由元素构成的。对程序员而言,网站建设制作就是代码构成网站。企业网站设计者也收集了各种各样的元素,但并非所有元素都需要运...【详细内容】
2021-10-26  南宁云尚网络    Tags:企业网站   点击:(39)  评论:(0)  加入收藏
在运营网站的过程中,有一件不可忽略的事情。那就是网站上线之前需要完成 ICP 备案。说到这里,很多朋友就提出疑问了~· 什么是 ICP 备案呢?· ICP 备案需要哪些材...【详细内容】
2021-10-22  启测云    Tags:ICP备案   点击:(45)  评论:(0)  加入收藏
最近有朋友问我,我公司有外资就不能申请ICP许可证了么?外资的定义是什么?其实是可以的,但有一个特定条件必须满足,外资公司是指公司有外资股东,比如香港、加拿大、美国、韩国等等,...【详细内容】
2021-10-21  小白速看Z    Tags:ICP   点击:(51)  评论:(0)  加入收藏
自互联网出现以来,超文本传输协议http协议被广泛用于在Web浏览器和网站服务器之间传递信息,但随着互联网的发展,另一种协议——https出现,并与http一同服务于这个互联...【详细内容】
2021-10-20  我是FEIYA    Tags:https   点击:(44)  评论:(0)  加入收藏
Grafana Loki 是一个日志聚合工具,它是功能齐全的日志堆栈的核心。图片来自 包图网先看看结果有多轻量吧: Loki 是一个为有效保存日志数据而优化的数据存储。日志数据的高效索...【详细内容】
2021-09-14    51CTO  Tags:Loki日志   点击:(97)  评论:(0)  加入收藏
背景最近做微信小程序开发比较多,大家知道线上微信小程序为了安全起见,要求后端通信协议必须是HTTPS,这就要求需要安装证书。为了测试预发布线上环境,特地买了个最便宜的域名,为...【详细内容】
2021-09-14  小李子说程序    Tags:HTTPS证书   点击:(124)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条