在C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
目录中有一个密钥容器的枚举。命名约定是<uniqueGUID>_<staticGUID>
并且我认为<staticGUID>
是机器标识符。最终,我希望能够将密钥容器与其各自的证书配对,以便我可以针对 ACL 的特定密钥文件。为此,我需要知道它<uniqueGUID>
是如何派生的以及它与证书的关系。
到目前为止,我检查过的 Microsoft 资源尚未阐明答案,但非常适合参考:
在C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
目录中有一个密钥容器的枚举。命名约定是<uniqueGUID>_<staticGUID>
并且我认为<staticGUID>
是机器标识符。最终,我希望能够将密钥容器与其各自的证书配对,以便我可以针对 ACL 的特定密钥文件。为此,我需要知道它<uniqueGUID>
是如何派生的以及它与证书的关系。
到目前为止,我检查过的 Microsoft 资源尚未阐明答案,但非常适合参考:
为了解决您为了修改私钥文件上的文件系统 ACL 而查找哪个证书与哪个密钥文件一起使用的问题,请使用以下命令:
文件命名约定为 x_y,其中 x 是用于唯一标识密钥的随机 GUID,y 是在
HKLM\SOFTWARE\Microsoft\Cryptography
.其中一些唯一标识符是众所周知的,例如其中一些 IIS 标识符:
但其他是随机生成的。
请注意,此信息仅适用于“本地计算机”或“机器”证书/密钥。用户证书存储在文件系统和注册表上相应的用户特定位置。
Ryan Ries 只提供了部分解决方案,因为它不适用于 CNG 密钥。以下代码将为 CNG 密钥检索容器名称(因此也是文件名):
我使用了 CryptoGuy 的代码,对其进行了显着扩展,并将其变成了一个函数。然而,它仍有改进的空间。谢谢,CryptoGuy!