인증서 개인 키를 사용 권한다.NET6

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 할당 권한 기계 열쇠

설정하는 인증서 개인 키 권한다.NET5

나는에 대한 액세스 권한을 부여할 수 있습을 통한 UI certlm.msc>드래그 인증서를 개인적인점>오른쪽 클릭합 인증서>모든 작업을 관리>개인 키>사용자를 추가 및 권한
그러나 나는 할 필요가 이 프로그래밍 방식으로

변경 사항이 있습니다.NET 전체 프레임워크는 예제에서 왔습니다. I've spent more than 하루에,그것도 여러 인증서,인증서는 확실히 표시로 내보낼 수 있고 실행하는 대로 관리자입니다. 나는 행복으로 윈도우에만 솔루션

이는 대로 나

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"method).

이를 위해 더 많은 정보: 프로그래밍 방식으로 추가하는 인증서를 개인적인 저장소

2021-12-02 16:48:54

다른 언어로

이 페이지는 다른 언어로되어 있습니다

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