证的私人钥匙的权限。净额6

0

的问题

我试图进口证书有私人钥匙插进窗户证书店。 我可以成功地进口证书使用的下面

X509Certificate2 certificate = new(certByteArray, certPassword, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet);
X509Store store = new(StoreName.TrustedPeople, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(certificate);

但问题我已经有了,如何给一个用户进入私人钥编程。
我发现这些链接有所帮助:
https://www.pkisolutions.com/accessing-and-using-certificate-private-keys-in-net-framework-net-core/
CngKey分配权限的机器的关键

设置证书的私钥的权限。网5

我可以授予访问权限通过用户界面与certlm.msc>拖证书到个人存储>权击证书>的所有任务>管理的私人钥匙>增加用户和权限
但我需要做的编程方式

有变化。净全框架,这是其中的例子。 我已经花了超过一天,尝试了多个证书,证书是绝对的标记为出口和运行VS作为管理员。 我很高兴与Windows唯一的解决办法

这是关于尽可能靠近我

const string NCRYPT_SECURITY_DESCR_PROPERTY = "Security Descr";
const CngPropertyOptions DACL_SECURITY_INFORMATION = (CngPropertyOptions)4;

X509Store trustedPeopleStore = new(StoreName.TrustedPeople, StoreLocation.LocalMachine);
trustedPeopleStore.Open(OpenFlags.ReadWrite);

var certificates = trustedPeopleStore.Certificates.Find(X509FindType.FindByThumbprint, "xxxxxxxxxxxxxxxxxxxxxx", false);

RSA rsa = certificates[0].GetRSAPrivateKey();
RSACng rsaCng = rsa as RSACng;

CngProperty prop = rsaCng.Key.GetProperty(NCRYPT_SECURITY_DESCR_PROPERTY, DACL_SECURITY_INFORMATION);

我可以看到rsaCng.钥匙存在调试,但是它无法在下一个线(它肯定是出口)获得的财产 Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException: 'Key not valid for use in specified state.' 我也读取意见,你不应该试图设置的acl直接在文件,但不知道这是否正确

.net acl c# cng
2021-11-24 00:59:41
1

最好的答案

0

看看 这个代码项目后的 一些例码授予访问权限以编程方式(具体地说看看"AddAccessToCertificate"方法)。

检查的更多信息: 编程方式加入证书到个人商店

2021-12-02 16:48:54

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................