X.509 证书中的颁发机构信息访问(AIA)扩展指定了一个 URL,可在其中获取颁发证书颁发机构(CA)证书。 如果系统无法仅使用本地存储中的证书生成完整的证书信任链,则可能会尝试使用 AIA URL 从网络下载缺少的中间证书。 AIA 自动检索缺失的证书,并最大程度地减少更新本地证书存储所需的手动工作量。
自动检索有助于完成信任链,但如果未正确管理,可能会带来安全风险。 若要增强安全性,请确保证书存储已正确配置,并且仅包含来自受信任 CA 的证书。 可以通过禁用 AIA 检索系统来进一步增强环境。 这迫使 Windows API 从本地存储中已存在的证书中独占生成证书链,从而减少无意中信任从外部源检索到的未经验证或恶意证书的风险。 采用这种深层防御策略有助于保护系统免受未经授权的或意外的证书信任路径。
管理 CA 的最佳做法包括:
保留受信任的根 CA 和中间 CA 列表 up-to-date。 这涉及到使用来自受信任源的新证书或更新的证书定期更新本地证书存储。
确保将中间证书一致添加到本地存储,尤其是在禁用 AIA 检索时。 这可以防止证书验证中的潜在中断。
对证书存储进行定期审核,以识别和删除过期或不受信任的证书。 这种做法有助于保持可信度并降低与过时证书相关的安全风险。
先决条件
若要更改 AIA,你必须是 管理员、 域管理员或 企业管理员 安全组的成员。
管理 AIA 检索
若要在环境中禁用 AIA 检索系统范围,请遵循以下方法之一:
- 组策略
- 注册表编辑器
- PowerShell
选择 “开始”,键入 gpedit,然后选择“ 编辑组策略”。
导航到 计算机配置\Windows 设置\安全设置\公钥策略 并打开 证书路径验证设置。
选择“ 网络检索 ”选项卡。选择“ 定义这些策略设置”,取消选中“ 允许在路径验证期间检索颁发者证书”,然后选择“ 确定”。
如果需要重新启用 AIA 检索,请取消选中“ 定义这些策略设置 ”,然后选择“ 确定”。
检索 AIA 状态
默认情况下,AIA 在设备上处于启用状态。 AIA 检索由 crypt32.dll中的 CCertChainEngine::GetIssuerUrlStore() 函数触发。 CERT_CHAIN_DISABLE_AIA和CERT_CHAIN_ENSABLE_AIA是在传递给创建引擎的 dwFlags 中设置的,或在调用 CertGetCertificateChain 时设置的。 若要检索当前的 AIA 状态,请运行以下命令:
$registryPath = "HKLM:\Software\Policies\Microsoft\SystemCertificates\ChainEngine\Config"
$propertyName = "Options"
try {
$regCheck = (Get-ItemProperty -Path $registryPath -Name $propertyName -ErrorAction Stop).$propertyName
switch ($value) {
0 { "AIA is Enabled" }
2 { "AIA is Disabled" }
default { "Unexpected value: $regCheck" }
}
} catch {
"AIA has not been set"
}