在MQTT服务器mosquitto上使用SSL/TSL

准备工作:

两台电脑,Window系统电脑称为本地电脑,Linux 系统电脑称为服务器电脑。

1、在本地电脑上下载mosquitto的源码,下载地址http://mosquitto.org/files/source/,这里选择1.4.11的最新版本。

2、下载后解压,解压后得到文件夹如右图所示

3、将上述解压的文件件拷贝到服务器电脑上,我使用的是SSH Secure File Transfer这个软件,将该文件夹拷贝到服务器的一个文件夹下,我使用的是/home/ubuntu/这个文件件,拷贝后的文件如下图示:

    

4、mosquitto-1.4.11文件夹下面有一个config.mk文件,是用于配置编译选项的,在这里使用默认的不修改,本文是讲述使用SSL/TSL,所以不修改config.mk文件,如果不使用SSL/TLS,则参考其他文章。

5、通过命令行进入到/home/ubuntu/mosquitto-1.4.11/文件夹下,你的电脑要进入到响应的mosquitto-1.4.11文件夹所在的文件夹下面,然后执行命令【make】,就可以编译了,在编译过程中可能会出现缺少一些文件的情况。

可能会遇到如下情况(引用自http://blog.csdn.net/xukai871105/article/details/39252653)

 

【a】编译找不到openssl/ssl.h
    【解决方法】——安装openssl

sudo apt-get install libssl-dev

【b】编译过程找不到ares.h

sudo apt-get install libc-ares-dev

【c】编译过程找不到uuid/uuid.h

sudo apt-get install uuid-dev

【d】使用过程中找不到libmosquitto.so.1

error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory

    【解决方法】——修改libmosquitto.so位置

# 创建链接

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1

# 更新动态链接库

sudo ldconfig

【e】make: g++:命令未找到  

    【解决方法】

    安装g++编译器

sudo apt-get install g++

6、编译完毕之后,进行安装,执行命令【sudo make install】。

至此,MQTT的安装已经完成,通过MQTT客户端调试软件MQTT.fx可以通过1883端口进行连接、订阅、发布。

================================================================================

                        以上是安装MQTT broker mosquitto的正常步骤,下面进行配置SSL/TLS

================================================================================

7、在服务器电脑上面创建myCA文件夹,在/home/ubuntu/ 文件夹下使用命令【mkdir myCA】,然后执行命令【sudo chmod 777】

8、进入myCA文件夹,然后执行命令wget https://github.com/owntracks/tools/raw/master/TLS/generate-CA.sh下载生

  成证书用的脚本。

9、下载完之后,在myCA文件夹下面执行命令【bash ./generate-CA.sh】,然后会在myCA文件夹下面生成

   ca.crt/localhost.crt/localhost.key这三个文件是给服务器使用的

10、然后在myCA文件夹下面执行命令【bash ./generate-CA.sh client myclient】,其中myclient是给客户端生成证书

   的名称,可随意更改。执行完上述命令后,会新生成几个文件。

   客户端需要使用的是ca.crt/myclient.crt/myclient.key这三个文件。

11、经过上述步骤之后,生成了服务器使用的ca.crt/localhost.crt/localhost.key文件和客户端使用的

   ca.crt/myclient.crt/myclient.key这几个文件,其中ca.crt是同一个文件。

12、配置mosquitto.conf文件。该文件在mosquitto-1.4.11安装文件夹里面,打开该文件,修改成如下配置:

    port 8883
    protocol mqtt
    cafile /home/myCA/ubuntu/ca.crt
    certfile /home/myCA/ubuntu/localhost.crt
    keyfile /home/myCA/ubuntu/localhost.key
    require_certificate true
    use_identity_as_username true

   使用以上的配置,将其他所有的带#号的行删除,只保留上述内容。

13、修改完配置文件之后,执行命令mosquitto -c /home/ubuntu/mosquitto-1.4.11/mosquitto.conf -v

  根据自己的mosquitto-conf文件所在的位置修改上述命令中的参数,然后服务器就以SSL/TSL的方式开始启动。

  此时客户端使用上述过程产生的客户端证书连接该服务器,即可进行通信。

14、若有疑问,请联系共同讨论

(未完、待续)

 

 

 

你可能感兴趣的:(mosquitto,MQTT,broker,SSLTLS,generate-CA.sh,软件)