Назад | Перейти на главную страницу

Определение имени контейнера шифрования, соответствующего ключу компьютера в% ProgramData% \ Microsoft \ Crypto \ RSA \ MachineKeys

В Windows ключи машины шифрования хранятся в:% ProgramData% \ Microsoft \ Crypto \ RSA \ MachineKeys

Как определить соответствующее имя контейнера для каждого ключа?

Я предполагаю, что эта неопределенность намеренно - «безопасность неизвестностью»?

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 может по крайней мере скрыть закрытые ключи в относительно безопасном месте глубоко в файловой системе, поскольку, если бы большинству пользователей приходилось иметь дело с закрытыми ключами самостоятельно, они бы просто оставили свои закрытые ключи на своих рабочих столах. .