z/Linux上MQ v9.3配置MS AD LDAP认证时绑定AD失败求助
z/Linux平台MQ v9.3通过MS AD LDAPS认证绑定失败排查
首次在z/Linux平台配置MQ v9.3队列管理器,对接Microsoft AD LDAPS认证(AD仅接受安全连接),但第一步AD绑定即失败。
已执行操作
1. 配置AUTHINFO及队列管理器
在runmqsc中执行以下命令:
DEFINE AUTHINFO(LDAP.MSAD) + AUTHTYPE(IDPWLDAP) + ADOPTCTX(YES) + DESCR('LDAP Connector to MSAD' ) + CONNAME('msad.acme.com(636)') + CHCKCLNT(OPTIONAL) + CHCKLOCL(OPTIONAL) + CLASSGRP('group') + CLASSUSR('user') + FAILDLAY(1) + FINDGRP('member') + BASEDNG('DC=msad,DC=acme,DC=com') + BASEDNU('DC=msad,DC=acme,DC=com') + LDAPUSER('CN=mybind,OU=ServiceAccounts,DC=msad,DC=acme,DC=com') + LDAPPWD('my_supersecret_passw0rd') + SHORTUSR('sAMAccountName') + GRPFIELD('cn') + USRFIELD('sAMAccountName') + AUTHORMD(SEARCHUSR) + NESTGRP(NO) + SECCOMM(YES) + REPLACE ALT QMGR CONNAUTH(LDAP.MSAD)
2. 创建并配置密钥库
执行以下命令生成并配置key.kdb:
# 创建key.kdb runmqakm -keydb -create -db key.kdb -pw passw0rd -type cms -stash # 将CA根证书从PEM转DER格式 openssl x509 -in ./ca_root.pem -outform der -out ./ca_root.der # 导入CA根证书到key.kdb runmqakm -cert -add -db key.kdb -stashed -label "ACME Internal Root CA" -file ./ca_root.der -format ascii # 确认证书已导入 runmqakm -cert -list -db key.kdb -stashed
3. 刷新安全配置
echo "REFRESH SECURITY" | runmqsc
错误日志(AMQERR01.LOG)
----- amqzfula.c : 3451 ------------------------------------------------------- 09/04/2024 01:46:28 PM - Process(4100598.22) User(mqm) Program(amqzlaa0) Host(myserver) Installation(Installation1) VRMF(9.3.0.17) QMgr(MYQM) Time(2024-09-04T20:46:28.479Z) ArithInsert1(81) CommentInsert1(ldap_simple_bind) CommentInsert2(Can't contact LDAP server) CommentInsert3(CN=mybind,OU=ServiceAccounts,DC=msad,DC=acme,DC=com ) AMQ5530E: Error from LDAP authentication and authorization service EXPLANATION: The LDAP authentication and authorization service has failed. The 'ldap_simple_bind' call returned error 81 : 'Can't contact LDAP server'. The context string is 'CN=mybind,OU=ServiceAccounts,DC=msad,DC=acme,DC=com '. Additional code is 0. ACTION: Correct the LDAP configuration. Look at the LDAP server logs for additional error information. ----- amqzfula.c : 3451 -------------------------------------------------------
已知信息
- 绑定账号密码、根证书有效,同一服务器上的WAS和
ldapsearch可正常使用 - 无法访问AD服务器日志
排查方向及修复建议
确认密钥库路径与权限
- MQ队列管理器默认从
/var/mqm/qmgrs/<QMGR_NAME>/ssl/目录读取密钥库文件,需确保key.kdb、key.sth、key.rdb已复制到该目录,权限设置为mqm:mqm,权限位至少600。 - 可通过
dspmqver -f all确认MQ SSL配置路径,或手动指定SSLKEYR参数:
注意此处仅需文件名前缀(去掉ALTER QMGR SSLKEYR('/var/mqm/qmgrs/MYQM/ssl/key').kdb后缀),执行后刷新安全配置。
- MQ队列管理器默认从
检查LDAPS连接兼容性
- AD LDAPS通常要求TLS 1.2+,可在AUTHINFO中指定TLS版本:
ALTER AUTHINFO(LDAP.MSAD) LDAP_OPTIONS('LDAP_OPT_PROTOCOL_VERSION=3,LDAP_OPT_X_TLS_PROTOCOL_MIN=TLS1_2') - 用
openssl s_client -connect msad.acme.com:636 -CAfile ./ca_root.pem测试服务器连通性及证书信任情况,确保z/Linux服务器能访问AD的636端口。
- AD LDAPS通常要求TLS 1.2+,可在AUTHINFO中指定TLS版本:
验证绑定账号有效性
- 用
ldapsearch直接验证绑定:ldapsearch -x -H ldaps://msad.acme.com:636 -D "CN=mybind,OU=ServiceAccounts,DC=msad,DC=acme,DC=com" -w "my_supersecret_passw0rd" -b "DC=msad,DC=acme,DC=com" "(sAMAccountName=mybind)" - 确保绑定账号拥有读取AD用户、组信息的权限。
- 用
调整系统LDAP客户端配置
- 检查
/etc/openldap/ldap.conf或/etc/ldap/ldap.conf中的TLS配置,确保指定了正确的CA证书路径及符合要求的TLS版本。 - 若系统配置冲突,可在AUTHINFO中直接指定CA文件路径:
ALTER AUTHINFO(LDAP.MSAD) LDAP_OPTIONS('LDAP_OPT_X_TLS_CACERTFILE=/var/mqm/qmgrs/MYQM/ssl/ca_root.pem')
- 检查
内容的提问来源于stack exchange,提问作者Renato
相关产品推荐
相关产品推荐

