(NET6+)授予用户对证书私钥的读取权限



Windows将证书的私钥存储为文件,您可以使用mmc.exe为用户提供对这些密钥的读取权限。我需要一种在NET6中以编程方式做到这一点的方法。

微软已经在X509Certificate类上标记了PrivateKey属性为过时的(从。net 4.6开始),正确的方法是使用提供的扩展方法。

然而,返回的RSA密钥类不包含一个UniqueName属性,我可以用它来确定私钥的文件名,从而授予用户对它的读权限。

这个问题向私钥授予用户权限显示了如何使用过时的属性名来实现它。

有谁知道不使用PrivateKey属性如何实现这一点吗?

我运气不错:

// input: "X509Certificate2 cert"
RSACng rsa = cert.GetRSAPrivateKey() as RSACng;
string rsaKeyName = rsa.Key.UniqueName;
if (rsaKeyName == null)
{
RSACryptoServiceProvider rsaCSP = cert.GetRSAPrivateKey() as RSACryptoServiceProvider;
rsaKeyName = rsaCSP.CspKeyContainerInfo.KeyContainerName;
}

最新更新