Certifikát súkromný kľúč práva .ČISTÝ 6

0

Otázka

Snažím sa importovať certifikát so súkromným kľúčom do Windows Certifikát Obchod. Môžem úspešne importovať certifikát pomocou nižšie

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);

Ale problém som dostal, ako dať používateľovi prístup do súkromného kľúča pomocou programovania.
Našiel som si tieto užitočné odkazy:
https://www.pkisolutions.com/accessing-and-using-certificate-private-keys-in-net-framework-net-core/
CngKey Priradiť povolenia na stroj kľúč

Nastaviť Certifikát PrivateKey práva .NET 5

Môžem udeliť prístup cez ROZHRANIE s certlm.msc > Ťahaním certifikát na Osobné store > kliknite Pravým tlačidlom myši certifikát > Všetky Úlohy > Spravovať súkromné kľúče > Pridať používateľa a povolenie
Ale musím to urobiť pomocou programovania

Tam sú zmeny z .ČISTÝ Celý Rámec, ktorý je miesto, kde príklady pochádzajú. Ja som strávil viac ako jeden deň na to, vyskúšali viaceré certifikáty, osvedčenia je určite označený ako exportovateľný a beží VS ako správca. Som spokojný s Windows jediné riešenie

To je asi tak blízko, ako som si

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);

Vidím rsaCng.Kľúčové prítomné v ladenie, ale nedarí sa na nasledujúcom riadku (to je určite exportovateľný) získavanie nehnuteľností s Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException: 'Key not valid for use in specified state.' Tiež som čítal komentáre, ktoré by ste nemali skúste nastaviť acl priamo na súbor, ale nie je si istý, či to je správne alebo nie

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

Najlepšiu odpoveď

0

Pozrite si tento kód projektu príspevok pre niektoré napríklad kód, ktorý zaručuje prístup pomocou programovania (konkrétne pozrieť na "AddAccessToCertificate" metóda).

Nechajte to pre viac info: Programovo pridanie certifikát na osobné obchod

2021-12-02 16:48:54

V iných jazykoch

Táto stránka je v iných jazykoch

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