IX509PrivateKey를 사용하여 X.509 인증 요청 ("NT AUTHORITY \ NETWORK SERVICE") 용 키를 만들고 Create 메서드를 생성하고 있습니다 액세스가 거부되었습니다 (저는 C#에서 파생 인터페이스를 P/Invoke하는 중이므로 HRESULT가 .NET 예외로 변환됩니다). 또한 프로세스 모니터는 액세스가 거부 된 키 파일에 대한 액세스 시도를 표시합니다 (키 파일이 작성 중입니다). 나는 (false로 MachineContext를 설정하여) 대신에 설정된 사용자 키를 생성하는 경우, 내가 대신 "액세스가 거부되었습니다"의 "파일을 찾을 수 없음"을 참조하십시오IX509PrivateKey :: Create는 "네트워크 서비스"라고 불릴 때 액세스를 거부합니다.
IX509PrivateKey privateKey = new CX509PrivateKey() as IX509PrivateKey;
privateKey.Length = request.KeyLength;
privateKey.ExportPolicy = X509PrivateKeyExportFlags.XCN_NCRYPT_ALLOW_EXPORT_FLAG;
privateKey.KeySpec = X509KeySpec.XCN_AT_SIGNATURE;
privateKey.KeyUsage = X509PrivateKeyUsageFlags.XCN_NCRYPT_ALLOW_ALL_USAGES;
privateKey.MachineContext = true;
privateKey.Create();
return privateKey;
:
여기에 실제 코드입니다. 그러나 ProcMon은 아무것도 보여주지 않습니다. 모든 키 파일에 액세스하려고 시도하지 않습니다.
프로세스 모니터에서 "네트워크 서비스"가 키 파일에 액세스하지 못했기 때문에 IX509PrivateKey :: SecurityDescriptor 속성을 사용하여 설정했습니다. "Network Service"는 키 파일에 실제로 액세스했지만 Create에서 거부 된 액세스를 여전히 받았으며 ProcMon은 여전히 파일에 대한 액세스가 거부 된 것으로 나타났습니다.
많은 아이디어가 있습니다.
Procmon에서 보이지 않는 경로는 무엇입니까? IIRC, NETWORK_SERVICE는 키가 저장되어있는'C : \ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys \ '에 많은 강점이 없습니다. – ixe013
위의 경로에있는 MachineKeys 디렉토리의 키 파일입니다. 그러나 보안 설명자가 제공되면 네트워크 서비스는 해당 파일에 대한 모든 권한을 가지며 여전히 액세스가 거부됩니다. – JohnC