本指南详细介绍了如何为EMQX消息服务器配置和启用SSL/TLS加密连接,并提供了证书生成步骤,确保数据传输的安全性。
EMQX是一款基于Erlang OTP构建的开源MQTT消息代理,在物联网环境中广泛应用。MQTT是一种轻量级发布订阅协议,适用于低带宽、高延迟或不可靠网络环境。SSLTLS是用于互联网安全通信的协议,确保数据传输的安全性和完整性。
开启EMQX的SSLTLS模式对于保障设备间通信至关重要。以下是具体步骤:
### 1. 开启EMQX的SSLTLS模式
编辑配置文件`etc/emqx.conf`以启用SSLTLS。找到或添加一个监听器定义,并设置端口为8883,协议为tls,同时指定证书路径。
示例如下:
```conf
listener.tcp.external =
port: 1883,
max_connections: 10000,
acceptors: 8,
listener.ssl.external =
port: 8883,
protocol: ssl,
max_connections: 10000,
acceptors: 8,
certfile: path/to/cert.pem,
keyfile: path/to/key.pem,
cacerts: path/to/ca.pem
```
确保替换路径为实际证书位置。
### 2. 创建SSL证书
生成私钥、CSR并申请或自签证书。使用OpenSSL工具创建RSA私钥:
```bash
openssl genpkey -algorithm RSA -out emqx.key -pkeyopt rsa_keygen_bits:2048
```
接着,用该密钥创建CSR,并填写组织信息。
然后提交CSR以获取签名证书或自签生成一个有效期为一年的证书。
最后将`emqx.crt`和`emqx.key`复制到EMQX配置文件中指定的位置并确保权限设置正确。
### 3. 验证与启动
重启服务应用新SSLTLS设置。使用命令检查配置及重启:
```bash
# 检查配置
emqx_ctl config check
# 重启服务
emqx_ctl restart
```
现在,EMQX应通过8883端口提供安全的MQTT连接。
### 注意事项
- 管理SSLTLS证书需谨慎处理私钥。
- 连接时客户端也必须支持SSLTLS并配置正确的服务器证书。
- 生产环境通常使用第三方CA证书而测试环境中可以使用自签证书。
- 定期更新证书以避免过期的安全风险。
以上详细介绍了在EMQX中启用SSLTLS及生成所需证书的流程,确保了通信安全。