确定 %ProgramData%\Microsoft\Crypto\RSA\MachineKeys 中与机器密钥对应的加密容器名称

确定 %ProgramData%\Microsoft\Crypto\RSA\MachineKeys 中与机器密钥对应的加密容器名称

在 Windows 上,加密机密钥存储在:%ProgramData%\Microsoft\Crypto\RSA\MachineKeys

如何确定每个键对应的容器名称?

我猜这种模糊性是设计使然——“通过模糊来实现安全”?

答案1

Foreach ($MachineCert In Get-ChildItem Cert:\LocalMachine -Recurse | Where HasPrivateKey)
{
    $MachineCert | 
       Select @{n='Subject';   e={ $MachineCert.Subject }},
              @{n='Container'; e={ $MachineCert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName }},
              @{n='Store';     e={ $MachineCert.PSParentPath }}
}


Subject               Container                    Store                                                                                                     
-------               ---------                    -----                                                                                                      
CN=Ryan-Win81-2014    f686aa...9dfa-7c3d5dc833ac   Remote Desktop                                       
CN=localhost          fad662...9dfa-7c3d5dc833ac   My

请注意,您可能需要管理员/UAC提升权限,然后才可以读取某些证书的某些属性。

我不能肯定地说这种“模糊性”是故意设计的,但这并不让我感到惊讶。不幸的是,大多数人不了解什么是 X509 证书或什么是私钥,大多数人也不关心。通过为您完成此操作,Windows 至少可以将私钥隐藏在文件系统深处相对安全的位置,因为如果大多数用户必须自己处理私钥,他们只会将私钥放在桌面上。

相关内容