Ubuntu服务器ActiveMQ MQTT Broker配置SSL及Windows客户端疑问
ActiveMQ MQTT Broker SSL配置疑问解答
步骤3:生成客户端证书/密钥库相关疑问
是否需要执行取决于你采用的SSL认证模式:
- 若使用单向认证(仅客户端验证Broker身份,Broker不验证客户端):无需执行此步骤。
- 若使用双向认证(Broker与客户端互相验证身份,安全性更高):需要执行,建议在Windows客户端本地完成(生成的
client.ks是客户端专属密钥库,放在本地更安全;也可在Broker端生成后拷贝到客户端,但不推荐)。
步骤4:创建客户端信任库并导入Broker证书相关疑问
不管是单向还是双向认证,必须执行此步骤,且执行位置为Windows客户端。因为客户端需要信任Broker的证书,否则建立SSL连接时会因证书不被信任而失败。
后续SSL连接配置步骤
一、Broker端(Ubuntu)配置
- 编辑ActiveMQ核心配置文件
conf/activemq.xml:- 添加MQTT SSL连接器,开启8883端口(MQTT SSL默认端口):
<transportConnectors> <!-- 保留原有连接器,新增如下SSL连接器 --> <transportConnector name="mqtt+ssl" uri="mqtt+ssl://0.0.0.0:8883?trace=false&transport.enabledProtocols=TLSv1.2,TLSv1.3"/> </transportConnectors> - 在
<broker>标签外部添加SSL上下文配置,替换为你的实际路径和密码:<sslContext> <sslContext keyStore="file:/opt/activemq/broker.ks" keyStorePassword="你的密钥库密码" /> </sslContext>
- 添加MQTT SSL连接器,开启8883端口(MQTT SSL默认端口):
- 重启ActiveMQ服务使配置生效:
sudo systemctl restart activemq
二、Windows客户端配置
场景1:单向认证
- 确保已在客户端完成步骤4,生成
client.ts信任库。 - 在MQTT客户端(如MQTTX、Eclipse Paho)中配置连接参数:
- 连接地址:
ssl://[Broker服务器IP]:8883 - 信任库路径:本地
client.ts的完整路径 - 信任库密码:创建信任库时设置的密码
- 无需配置客户端密钥库相关参数
- 连接地址:
场景2:双向认证
- 完成客户端侧证书准备:
- 已在客户端生成
client.ks密钥库,且完成步骤4将Broker证书导入client.ts。 - 在Windows客户端导出客户端证书:
keytool -export -alias client -keystore client.ks -file client_cert
- 已在客户端生成
- Broker侧添加客户端信任配置:
- 将导出的
client_cert文件拷贝到Ubuntu Broker服务器。 - 在Broker端创建信任库并导入客户端证书:
keytool -import -alias client -keystore broker.ts -file client_cert - 修改
activemq.xml的sslContext配置,补充信任库信息:<sslContext> <sslContext keyStore="file:/opt/activemq/broker.ks" keyStorePassword="Broker密钥库密码" trustStore="file:/opt/activemq/broker.ts" trustStorePassword="Broker信任库密码" /> </sslContext> - 重启ActiveMQ服务。
- 将导出的
- 客户端连接配置:
- 连接地址:
ssl://[Broker服务器IP]:8883 - 信任库路径:本地
client.ts的完整路径 - 信任库密码:创建信任库时设置的密码
- 客户端密钥库路径:本地
client.ks的完整路径 - 客户端密钥库密码:生成
client.ks时设置的密码
- 连接地址:
三、连接验证
使用Windows上的MQTT客户端工具配置好参数后发起连接,若成功建立连接则SSL配置生效。
内容的提问来源于stack exchange,提问作者sondavid2020
相关产品推荐
相关产品推荐

