emqx启动SSL/TLS 证书认证方式
1、OpenSSL相关配置
1.1.下载openssl:
有4种安装包:
Win64 OpenSSL v3.3.2 Light,安装Win64 OpenSSL v3.3.2最常用的软件包
Win64 OpenSSL v3.3.2,安装Win64 OpenSSL v3.3.2完整软件包(一般安装此版本)
Win32 OpenSSL v3.3.2Light,安装Win32 OpenSSL v3.3.2最常用的软件包
Win32 OpenSSL v3.3.2,安装Win32 OpenSSL v3.3.2完整软件包
1.2.安装openssl
路径自行选择
最后一步,是否捐款,去掉所有勾选即可,如下:
1.3.配置环境变量
在系统变量里面的path中添加OpenSSL的bin路径
查看openssl安装版本
openssl version
1.4.配置SSL双向认证
1.4.1.生成根证书私钥
openssl genrsa -out ca.key 2048
1.4.2.生成根证书
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.pem
中间根据提示填写相关信息,需要输入省份、城市、公司、组织、姓名、邮件,填写内容一般不影响
1.4.3.生成服务端证书私钥
openssl genrsa -out emqx.key 2048
1.4.4.生成服务端证书请求
在bin录下手动创建一个openssl.cnf的文件,仅需设置IP地址,其中将IP.1和DNS.1修改为服务器地址。这里配置的国家省份城市要和上面配置的一致
[req]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
countryName = CN
stateOrProvinceName = Jiangsu
localityName = Suzhou
organizationName = EMQX
commonName = CA
[req_ext]
subjectAltName = @alt_names
[v3_req]
subjectAltName = @alt_names
[alt_names]
IP.1 = 替换为自己的mqtt服务器地址
DNS.1 = 替换为自己的mqtt服务器地址
1.4.5.文件建立完成后,生成服务端证书请求
openssl req -new -key ./emqx.key -config openssl.cnf -out emqx.csr
1.4.6.生成服务端证书
openssl x509 -req -in ./emqx.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out emqx.pem -days 3650 -sha256 -extensions v3_req -extfile openssl.cnf
1.4.7.生成客户端证书私钥
openssl genrsa -out client.key 2048
1.4.8.生成客户端证书请求
这里配置的国家省份城市及用户名要和上面配置的一致
openssl req -new -key client.key -out client.csr -subj "/C=CN/ST=Jiangsu/L=Suzhou/O=EMQX/CN=client"
1.4.9.生成客户端证书
openssl x509 -req -days 3650 -in client.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out client.pem
2.EMQX相关配置
2.1.拷贝文件
将前文中通过 OpenSSL 工具生成的 emqx.pem、emqx.key 及 ca.pem 文件拷贝到 EMQX 的 etc/emqx/certs/ 目录下
2.2.修改文件的用户及用户组
进到相关目录
cd etc/emqx/certs/
修改文件用户及用户组
sudo chown emqx:emqx ca.pem
sudo chown emqx:emqx emqx.key
sudo chown emqx:emqx emqx.pem
2.3.配置EMQX开启SSL
修改监听器
配置ssl
点击default,配置路径
3.测试证书验证方式
3.1.打开MQTTX测试工具
注意证书认证方式的端口是8883
选择mqtts连接方式
输入emqx服务器地址
证书验证方式选择 CA or Self signed certificates
选择之前生成好的证书,对应存放
3.2.测试连接(证书方式+用户方式)
如果只想使用证书认证,不想使用用户密码认证的话需要关闭对应的
如果你的客户端认证及授权都是用的myqsl方式的话,则选择证书后还需要填写用户名密码
添加订阅,确认消息是否到达
3.2.测试连接(只使用证书方式)
需要关闭客户端的认证方式
关闭客户端授权认证方式
客户端授权中的未匹配时执行必须是allow,不然会出现未授权
测试连接