Kerberos keytab生成失败:无法设置servicePrincipalName属性求助
Kerberos Keytab生成SPN设置失败(错误0x13)排查方向
已确认信息
- 执行的ktpass命令:
ktpass -out ssowebapp.keytab -princ HTTP/pdx-kerbtest@DEV-COMPANY.LOCAL -mapUser webapp5@DEV-COMPANY.LOCAL -crypto AES256-SHA1 -pType KRB5_NT_PRINCIPAL -pass password -mapOp set - 核心错误输出:
Targeting domain controller: DC1.dev-COMPANY.local
Failed to set property 'servicePrincipalName' to 'HTTP/pdx-kerbtest' on Dn 'CN=SSO WEBAPP5,OU=Ken OU,DC=dev-COMPANY,DC=local': 0x13.
WARNING: Unable to set SPN mapping data. - 前置条件:无该SPN映射,已使用Domain Admins/Schema Admins/Enterprise Admins/Administrators组权限登录,CMD以管理员运行,UAC已禁用。
具体排查方向
- 校验SPN格式与主机名一致性:
确认HTTP/pdx-kerbtest中的主机名pdx-kerbtest在AD中可正常解析,且大小写与实际主机名完全匹配——AD对SPN大小写敏感,格式不匹配会导致设置失败。 - 手动测试SPN添加权限:
跳过ktpass,直接用setspn命令尝试添加SPN:
若失败会返回更具体的错误信息,可定位是用户对象权限问题还是SPN本身的冲突。同时在AD用户属性编辑器中查看setspn -S HTTP/pdx-kerbtest@DEV-COMPANY.LOCAL webapp5servicePrincipalName字段,确认是否存在异常字符或被锁定的情况。 - 检查域控制器复制状态:
运行repadmin /showrepl查看DC1与其他域控制器的复制情况,若存在复制延迟或失败,可能导致SPN设置无法正常同步生效。同时确认DC1是可写域控制器,而非只读副本。 - 验证AES256配置兼容性:
确保域功能级别至少为Windows Server 2008,且webapp5用户对象已启用AES256加密支持——在AD用户属性的「账户」选项卡中,勾选「此账户支持Kerberos AES 256位加密」选项。 - 调整ktpass命令参数:
尝试移除-mapOp set参数改用默认映射逻辑,或添加-force参数强制执行:ktpass -out ssowebapp.keytab -princ HTTP/pdx-kerbtest@DEV-COMPANY.LOCAL -mapUser webapp5@DEV-COMPANY.LOCAL -crypto AES256-SHA1 -pType KRB5_NT_PRINCIPAL -pass password -force - 排查DNS解析问题:
用nslookup DC1.dev-COMPANY.local和nslookup pdx-kerbtest验证DNS解析是否正常,避免因域名解析错误导致与域控制器通信异常。
内容的提问来源于stack exchange,提问作者Lee Rudd
相关产品推荐
相关产品推荐

