You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ActiveMQ Artemis配置SSL后非法客户端仍可连接如何解决

问题根因与修复方案

你遇到的配置失效问题由以下几个常见遗漏点导致,按优先级排序修复即可:

  1. 未开启Broker全局安全总开关
    这是用户名密码校验失效的核心原因,Artemis的身份认证、权限校验需要显式开启总开关,默认关闭状态下所有安全规则都不生效。
    在broker.xml的<core>节点下添加配置:
<security-enabled>true</security-enabled>
  1. 客户端SSL连接协议前缀错误
    SSL连接必须使用ssl://前缀,你当前用的tcp://前缀会导致SSL参数不生效,证书校验逻辑被直接跳过。修改ActiveMQConnectionFactory的连接URL:
ActiveMQConnectionFactory artemisConnectionFactory = new ActiveMQConnectionFactory(
  "ssl://localhost:61617?sslEnabled=true&trustStorePath=" + pathToTrustStore 
  + "&trustStorePassword=" + truststorePassword
);

注意不要硬编码密码,优先使用注入的truststorePassword变量,needClientAuth是服务端配置,客户端无需添加该参数。
3. 权限配置存在非法空格
broker.xml的security-settings中,角色列表逗号后存在空格,Artemis会将空格识别为角色名的一部分,导致权限匹配失败,去掉空格即可:

<permission type="createNonDurableQueue" roles="admins,users"/>
<!-- 所有permission的roles属性都要去掉逗号后的空格 -->
  1. 确认登录模块配置正常
    检查Brokeretc目录下的login.config文件,确保存在以下默认配置(自定义修改过配置的情况下可能丢失),该配置负责读取用户、角色文件做身份校验:
activemq {
    org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule required
        debug=false
        reload=true
        org.apache.activemq.jaas.properties.user="artemis-users.properties"
        org.apache.activemq.jaas.properties.role="artemis-roles.properties";
};
  1. SSL证书校验调试
    如果修复后依然存在证书校验失效问题,可在Broker启动脚本中添加JVM调试参数,查看SSL握手过程的具体报错:
-Djavax.net.debug=ssl,handshake

需确认Broker的truststore已导入所有合法客户端的公钥,客户端的truststore已导入Broker的公钥,即可完成双向证书校验。

内容的提问来源于stack exchange,提问作者ShreyasJavahar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:15:02