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