在域环境中强制启用aes-256加密协议需同步配置default domain policy和default domain controllers policy两处gpo,确保kerberos策略与安全选项均启用aes128/aes256并禁用rc4;每个用户须重置密码或通过powershell设置msds-supportedencryptiontypes=24以生成aes256密钥;客户端需执行klist purge清除旧票据并验证klist tickets中encryption type为aes256-cts-hmac-sha1-96。
在域环境中强制启用aes-256加密协议,核心是让kerberos身份验证全程使用aes256_hmac_sha1算法,彻底淘汰rc4、des等弱加密。这需要域控制器、用户账户、客户端三端协同生效,缺一不可。
确认基础环境是否达标
不是所有系统都能支持AES-256,必须提前验证:
- 域功能级别 ≥ Windows Server 2008(推荐2012 R2或更高)
- 域控制器运行Windows Server 2008及以上版本
- 客户端为Windows Vista / Server 2008或更新系统(XP、Win7 SP1前版本不支持)
- AD林和域范围已启用“高级安全”相关功能(如msDS-SupportedEncryptionTypes属性可用)
同步配置两处关键组策略
只改客户端策略而忽略域控制器策略,会导致登录失败或TGT签发异常。必须同时配置:
- Default Domain Policy:计算机配置 → 安全设置 → 账户策略 → Kerberos策略 → “支持的Kerberos加密类型”设为AES128_HMAC_SHA1和AES256_HMAC_SHA1,取消勾选RC4_HMAC_MD5、DES_CBC_CRC等所有弱算法
- Default Domain Controllers Policy:计算机配置 → 安全设置 → 本地策略 → 安全选项 → “网络安全性:配置Kerberos所允许的加密类型”,值设为相同组合(AES128+AES256),此处路径极易找错,不是“Kerberos策略”节点
为每个用户账户生成AES-256密钥
GPO只声明能力,不自动生成密钥。用户账户必须实际拥有AES256密钥,否则即使策略启用也无效:
- 最稳妥方式:让用户重置一次密码(新密码哈希会触发KDC生成AES128和AES256密钥对)
- 批量操作(如服务账户):
Set-ADUser -Identity "svc_db" -Replace @{"msDS-SupportedEncryptionTypes"=24}(24 = AES128+AES256) - 验证方法:在客户端执行
klist tickets,Encryption Type字段应出现aes256-cts-hmac-sha1-96;若仍为rc4-hmac,说明该用户密钥未更新
客户端清理缓存并验证效果
GPO下发后,旧票据不会自动失效,必须主动清除:
- 客户端执行
klist purge(或重启电脑),强制获取新TGT - 检查域控制器事件日志:Event ID 4769中“Service Ticket Encryption Type”字段应显示
24(AES256) - 抓包验证(可选):Wireshark过滤
kerberos && kerberos.etype == 18,确认AS-REQ中etype=18(AES256) - 若登录失败且日志报KDC_ERR_ETYPE_NOSUPP(错误码14),说明某端缺少对应密钥或策略未同步










