Apache Kerberos认证SSO失效问题排查求助
问题:Kerberos SSO突然失效排查请求
环境与现象
- 运行Drupal的CentOS服务器,通过LDAP模块实现域内Kerberos SSO免登录,本人未参与搭建,也无Kerberos使用经验
- 无任何本地配置改动,但SSO昨日突然失效:用户访问站点时弹出Kerberos身份验证的用户名密码提示(非Drupal登录框),取消后跳转至ErrorDocument,再重定向至Drupal手动登录
- 另一台配置几乎相同(各有独立keytab)的同类型服务器,SSO仍正常运行
- 生成keytab的原域控制器3个月前已下线,昨日开始出现问题;域控已迁移至新服务器提供相同服务,且另一台正常站点未修改krb5.conf仍可正常认证
已执行操作
- 修改
/etc/krb5.conf中的kdc、master_kdc、admin_server指向新域控服务器
关键配置与命令输出
Apache vhosts.conf相关配置
AuthType Kerberos AuthName "Intranet Login" KrbServiceName HTTP/intranet@INTRANET.DDL.COM KrbMethodNegotiate on KrbMethodK5Passwd off KrbAuthRealms INTRANET.DDL.COM KrbLocalUserMapping on Krb5Keytab /etc/httpd/conf/intranet.keytab require valid-user ErrorDocument 401 /path/login-simple.php
klist查看keytab结果
KVNO Timestamp Principal ____ ___________________ ___________________________ 3 01/01/70 10:00:00 HTTP/intranet@INTRANET.DDL.COM 3 01/01/70 10:00:00 HTTP/intranet@INTRANET.DDL.COM 3 01/01/70 10:00:00 HTTP/intranet@INTRANET.DDL.COM 3 01/01/70 10:00:00 HTTP/intranet@INTRANET.DDL.COM 3 01/01/70 10:00:00 HTTP/intranet@INTRANET.DDL.COM
kvno命令执行结果
HTTP/intranet@INTRANET.DDL.COM: kvno = 3
排查步骤建议
- 验证keytab有效性:执行
kinit -kt /etc/httpd/conf/intranet.keytab HTTP/intranet@INTRANET.DDL.COM,测试是否能成功获取Kerberos票据,失败则说明keytab存在权限或密钥不匹配问题 - 检查时间同步:Kerberos对时间差敏感,确保服务器与新域控的时间差在5分钟内,可通过
timedatectl或ntpq -p查看同步状态 - 查看Apache日志:检查
/var/log/httpd/error_log和access_log中Kerberos相关错误,比如票据验证失败、KDC连接超时等信息 - 对比正常服务器配置:逐行对比两台服务器的
krb5.conf、Apache vhost配置、keytab文件权限(ls -l /etc/httpd/conf/intranet.keytab),重点关注DNS解析、域控地址、用户权限差异 - 测试新域控连接:执行
telnet <新域控IP> 88验证KDC端口(UDP/TCP 88)是否可达,确保服务器能正常连接新域控 - 修正keytab权限:确保Apache进程(通常为
apache用户)对keytab有读取权限,执行chmod 600 /etc/httpd/conf/intranet.keytab和chown apache:apache /etc/httpd/conf/intranet.keytab - 重新生成keytab:若上述步骤无效,在新域控上重新生成对应服务主体的keytab,替换现有文件后重启Apache服务
内容的提问来源于stack exchange,提问作者user3713929
相关产品推荐
相关产品推荐

