ActiveMQ配置对接AD的安全LDAPS连接问题咨询
解决方案
报错根因
你的LDAP服务端已启用安全策略,禁止未加密且未开启完整性校验的普通LDAP绑定操作,需通过两种方式解决:切换为LDAPS加密连接,或给普通LDAP连接开启SASL完整性校验,更推荐生产环境使用LDAPS方案。
第一步:先验证LDAP查询连通性
使用openldap-clients的ldapsearch工具先验证配置正确性,确认可用后再修改ActiveMQ配置:
- 方案1:使用LDAPS端口(默认636)查询
若LDAP服务使用自签名证书,先将CA根证书加入系统信任库(CentOS/RHEL系为例):
执行查询命令:cp your_ldap_ca.crt /etc/pki/ca-trust/source/anchors/ update-ca-trust extract
临时测试可跳过证书校验:ldapsearch -H ldaps://<LDAP服务器地址>:636 -D "<绑定用户DN>" -w <绑定密码> -b "<搜索基准DN>" <自定义过滤条件>LDAPTLS_REQCERT=allow ldapsearch -H ldaps://<LDAP服务器地址>:636 -D "<绑定用户DN>" -w <绑定密码> -b "<搜索基准DN>" <自定义过滤条件> - 方案2:普通LDAP端口开启StartTLS加密
无需更换端口,直接在原有查询命令中加入-ZZ参数强制启用StartTLS加密即可:ldapsearch -H ldap://<LDAP服务器地址>:389 -ZZ -D "<绑定用户DN>" -w <绑定密码> -b "<搜索基准DN>" <自定义过滤条件>
第二步:配置ActiveMQ使用LDAPS连接
ldapsearch验证通过后,修改ActiveMQ配置:
- 导入LDAP CA根证书到ActiveMQ使用的JRE信任库,默认JRE信任库密码为
changeit:
keytool -import -alias ldap-ca -file <LDAP CA证书路径> -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
- 修改
conf/login.config配置文件,替换原有LDAP登录模块配置,核心修改点为连接地址改为ldaps协议、新增SSL协议参数:
activemq-web-console { org.apache.activemq.jaas.LdapLoginModule required debug=true initialContextFactory=com.sun.jndi.ldap.LdapCtxFactory connectionURL="ldaps://<LDAP服务器地址>:636" connectionUsername="<绑定用户DN>" connectionPassword="<绑定用户密码>" userBase="<用户搜索基准DN>" userSearchMatching="(sAMAccountName={0})" userSearchSubtree=true roleBase="<角色搜索基准DN>" roleName="cn" roleSearchMatching="(member={1})" roleSearchSubtree=true java.naming.security.protocol=ssl ; };
上述配置中的过滤规则可保持你之前调试好的参数,仅需修改连接地址和新增SSL参数即可。
- 重启ActiveMQ服务,测试Web控制台LDAP账号登录即可。
内容的提问来源于stack exchange,提问作者YumYum
相关产品推荐
相关产品推荐

