一、编译前工作
需要先安装好CMake
工具。
解压源码,例如:mosquitto-1.6.9.tar.gz
到目录/home/workspace/mosquitto-1.6.9
,打开CMake
软件:
选择后点击“Configure”按钮。
在Linux的x64系统中选择默认选项,点击“Finish”按钮。
等待初始化配置,当日志窗口出现“Configuring done”时,说明初始化配置完成。
此时,可以在图中的红色区域内进行个性化配置,以下介绍几个重要的配置选项。
- CMAKE_INSTALL_OLDINCLUDEDIR,默认为
/usr/include
。这里改为/opt/mosquitto-1.6.9-linux/include
。 - CMAKE_INSTALL_PREFIX,指定mosquitio编译后的安装路径,默认为
/usr/local
。这里改为/opt/mosquitto-1.6.9-linux
。 - WITH_STATIC_LIBRARIES,指定是否同时编译出静态库,若打勾则除了动态库还会编译出静态库,默认不打勾(只编译动态库)。
- WITH_TLS,指定是否包含SSL/TLS支持,默认打勾(若打勾,必须设置OpenSSL相关配置选项),若不想使用SSL,则不打勾。
- WITH_TLS_PSK,指定是否包含TLS_PSK支持,默认打勾(若打勾,必须同时把WITH_TLS打勾),若不想使用SSL,则不打勾。
当个性配置设置确认后,点击“Generate”按钮,生成构建文件。
当日志窗口出现“Generating done”时,表示构建文件已经创建成功。
进入目录/home/software/mosquitto-1.6.9-build
,可以看到如下文件。
二、编译源码
打开终端,输入命令:make all
,成功后,输入命令:make install
,即可把mosquitto库安装到目录:/opt/mosquitto-1.6.9-linux
。
三、服务器搭建以及SSL/TLS安全配置
1、服务器搭建
终端进入/opt/mosquitto-1.6.9-linux/bin
目录,可以看到:
运行命令
./mosquitto
,将启动代理服务器,默认端口为1883
,可以加上-h
选项查看帮助,运行成功后如下:
可以加上-c
选项为服务器指定配置文件,配置文件模板在目录/opt/mosquitto-1.6.9-linux/etc/mosquitto
里:
可以把该文件拷贝到目录
/opt/mosquitto-1.6.9-linux/bin
,如:
然后在修改
mosquitto.conf
里面的配置选项。终端运行./mosquitto -c mosquitto.conf
加载配置文件,每次修改配置文件后无法立即生效,需要重启服务器。
2、SSL/TLS安全配置
首先需要已经安装了openssl库,请参考:
在任意路径创建目录,假设命名为cert
,目录路径为:/home/workspace/cert
。在目录中创建两个文件:
rsa_ca.sh
,用于创建自己根证书文件和私钥的CA.crt
和CA.key
(注意:正式情况不能这样处理)。代码如下:
#!/bin/bash
# 配置证书公司名
CA_O="company"
# 配置证书有效时间(天数)
CA_DAYS=3650
# 生成私钥文件
openssl genrsa -out CA.key 1024
# 生成自签名证书
CA_SUBJ="/O=$CA_O"
openssl req -new -key CA.key -x509 -days $CA_DAYS -out CA.crt -subj $CA_SUBJ
rm -rf *.srl
rsa_client.sh
,用于生成客户用的client.crt
和client.key
文件。代码如下:
#!/bin/bash
# 配置证书公司名
CLIENT_O="company"
# 配置主机地址
CLIENT_CN="127.0.0.1"
# 配置证书有效时间(天数)
CLIENT_DAYS=3650
# 生成私钥文件
openssl genrsa -out client.key 1024
# 生成证书请求文件
CLIENT_SUBJ="/O=$CLIENT_O/CN=$CLIENT_CN"
openssl req -new -key client.key -out client.csr -subj $CLIENT_SUBJ
# 生成自签名证书
openssl x509 -req -in client.csr -CA CA.crt -CAkey CA.key -CAcreateserial -days $CLIENT_DAYS -out client.crt
rm -rf *.srl
rm -rf *.csr
这里把client.crt
和client.key
文件重命名为mosq_srv.crt
和mosq_srv.key
供服务器使用。
修改/opt/mosquitto-1.6.9-linux/bin/mosquitto.conf
配置文件。
- 把默认端口号修改为
8883
,如:
- 指定
cafile
,certfile
和keyfile
选项,如:
- 设置服务器为需要证书验证,如:
保存配置文件,运行命令
./mosquitto -c mosquitto.conf
,运行成功后如下: