怎么在域环境中强制启用AES256加密协议指南

星墨同学_7783

星墨同学_7783

2026-04-10

736人浏览

原创

必须同步配置域策略与域控制器策略并刷新用户密钥:Default Domain Policy中启用AES加密类型并禁用RC4;Default Domain Controllers Policy中在“安全选项”下设相同加密类型;每个用户需重置密码或通过PowerShell设置msDS-SupportedEncryptionTypes为24以生成AES256密钥;客户端须执行klist purge或重启清除旧票据缓存;验证需抓包确认AS-REQ中etype=18。

域控制器上必须同步修改两处GPO策略

只改客户端策略而忽略域控制器策略,会导致登录失败或tgt无法签发。错误现象是用户反复提示“密码错误”或事件日志中出现event id 4768(as-req)失败,且service ticket encryption type字段为空或为0。

需要同时配置:

  • Default Domain Policy → 计算机配置 → 安全设置 → 账户策略 → Kerberos策略 → 支持的Kerberos加密类型:勾选AES128_HMAC_SHA1和AES256_HMAC_SHA1,**务必取消勾选RC4_HMAC_MD5等弱算法**
  • Default Domain Controllers Policy → 计算机配置 → 安全设置 → 本地策略 → 安全选项 → 网络安全性:配置 Kerberos 所允许的加密类型:设为相同值(RC4_HMAC_MD5,AES128_HMAC_SHA1,AES256_HMAC_SHA1)

注意:第二处策略在“安全选项”下,不是“Kerberos策略”,路径极易找错;若仅配置第一处,域控制器自身仍会接受RC4票据,导致客户端启用AES后被拒绝。

每个AD用户账户必须显式启用AES256密钥

Kerberos票据是否能用AES256,最终取决于用户账户是否生成了对应密钥。即使GPO已下发、域功能级别达标,Set-ADAccountControl -SupportedEncryptionTypes AES128,AES256也只设置“能力声明”,不自动生成密钥。

必须执行以下任一操作才能真正生成AES256密钥:

  • 用户主动重置一次密码(推荐):新密码哈希会触发KDC生成AES128和AES256密钥对
  • PowerShell批量刷新(适用于服务账户):Set-ADUser -Identity "svc_sql" -Replace @{"msDS-SupportedEncryptionTypes"=24}(24 = AES128+AES256)
  • 使用ldp.exe手动修改msDS-SupportedEncryptionTypes属性为24,然后强制KDC重建密钥(需重启Netlogon服务)

验证方式:在客户端运行klist tickets,看Encryption Type是否出现aes256-cts-hmac-sha1-96;若仍是rc4-hmac,说明该用户密钥未更新。

客户端生效前必须清除旧票据缓存

GPO策略下发后,已获取的TGT不会自动失效——它仍按旧加密类型续期。常见误判是“配置完就去查klist,发现还是RC4”,其实只是缓存没清。

强制刷新方法:

  • 执行klist purge(管理员权限CMD/PowerShell)
  • 或运行net stop kdc && net start kdc(仅限Windows专业版及以上)
  • 最彻底:重启客户端,确保全新TGT以AES256请求

注意:klist tickets只显示当前缓存票据,不反映策略是否生效;真正生效标志是下次AS-REQ请求中etype字段为18(AES256)——可用Wireshark抓包过滤kerberos && kerberos.etype == 18确认。

非Windows客户端和老旧服务要单独评估兼容性

AES256启用后,以下场景大概率中断,且无法通过GPO降级解决:

  • Linux上使用SSSD + krb5.conf未配置default_tgs_enctypes和default_tkt_enctypes为aes256-cts-hmac-sha1-96
  • SQL Server 2012及更早版本连接字符串含Integrated Security=true时,底层Schannel可能拒绝AES256票据
  • 某些Java应用(JDK krb5.conf中显式启用AES256

临时缓解方案只能是:为特定服务账户保留RC4支持(在ADUC中该用户属性→“加密类型”里**只勾选RC4_HMAC_MD5**),但这是安全妥协,应同步推动应用升级。真正的加固完成点,是所有关键服务票据都稳定显示Encryption Type: aes256-cts-hmac-sha1-96且无登录失败事件。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

120

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

60

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

60

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

40

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

60

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

20

15

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

40

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

320

12

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

2026.10.22

40

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习