在 PowerShell 中读取 TLS 证书链 — 观察 X509Chain 的状态

セキュリティカテゴリを表すパンダのイラスト 安全

关于本文
本文是通过利用生成式 AI 的自动生成流程创建的。我们确认了 .NET 的 X509Chain 官方规范,并整理了如何通过 PowerShell 以只读方式观察 TLS 证书链状态的方法。

验证状态:📘 .NET 官方规范已确认・Windows 实体机未验证

即使通过 HTTPS 显示了证书,“该证书连接到哪个证书颁发机构以及 Windows 如何对其进行评估”也是另外的信息。通过 PowerShell 使用 X509Chain 可以观察证书链的各个层级。

首先尝试

这是一个仅从本地证书存储中读取一张证书的示例。

$cert = Get-ChildItem Cert:\CurrentUser\Root | Select-Object -First 1
$chain = [System.Security.Cryptography.X509Certificates.X509Chain]::new()
try {
    $ok = $chain.Build($cert)
    "SUCCESS Build=$ok"
    $chain.ChainElements | ForEach-Object {
        $_.Certificate.Subject
    }
} finally {
    $chain.Dispose()
}

Select-Object -First 1 仅用于教学目的。在实际工作中选择目标证书时,请明确指定 Thumbprint 或 Subject。

看这里

Build() 的真假值,失败时还要确认 ChainStatus

$chain.ChainStatus | Format-Table Status, StatusInformation -AutoSize

证书本身、有效期以及到受信任根证书的路径是不同的维度。

尝试修改一处

CurrentUser\Root 修改为 CurrentUser\My,并观察使用您个人存储中的证书时,证书链中的元素数量会如何变化。请仅进行读取,不要进行删除或添加操作。

为什么会这样

证书验证并不是“查看单个文件”的过程,而是通过追溯颁发者来构建到信任点的路径的过程。缺少中间证书、过期、吊销检查等都会改变结果。

如果用于工作

当公司内部网站、代理服务器、VPN、电子申报或合作伙伴系统仅显示“证书错误”时,在反复打开浏览器之前,将 Subject/Issuer/NotAfter/ChainStatus 列表化,可以作为排查和咨询的依据。

但是,请不要因为在生产环境故障中将 RevocationMode=NoCheck 设置为成功就判定为安全。禁用吊销检查的测试仅用于排查问题,并非永久设置。

总结

对于 TLS 证书问题,不仅要观察有效期,还要观察证书链,这样能加深理解。在 PowerShell 中,应以只读方式使用 X509Chain,并结合 Build 结果和 ChainStatus 进行确认。

官方信息・一手资料

  • .NET X509Chain: https://learn.microsoft.com/dotnet/api/system.security.cryptography.x509certificates.x509chain

文档信息

文章??
在 PowerShell 中读取 TLS 证书链 — 观察 X509Chain 的状态
?布日期
更新日期
来源
https://papanda925.com/?p=15726&lang=zh

?可: ?于本站?有相??利的正文及原??表,除非?有?明,可依据 CC BY 4.0 使用。本文可能包含使用生成式AI?建或??的内容。若代??有?可声明,或?接的GitHub???定了?可,?代?以??可?准。引用内容、第三方?料、?片及商?不在本?可范?内。 使用政策

标题和URL已复制