установка службы WCF Я также устанавливаю сертификат с закрытым ключом. Поскольку я буду запускать службу от имени другого пользователя, ему нужен доступ к закрытому ключу. Я подробно прочитал другие вопросы о стековом потоке, и все они предполагают, что разрешение на файл с закрытым ключом в файловой системе необходимо скорректировать. Я делаю это,
private static void AddUserPermissions(X509Certificate2 certificate, NTAccount user, StoreLocation storeLocation)
{
RSACryptoServiceProvider rsaProvider = (RSACryptoServiceProvider)certificate.PrivateKey;
// Find file
string keyPath = FindKeyLocation(rsaProvider.CspKeyContainerInfo.UniqueKeyContainerName, storeLocation);
FileInfo keyFileInfo = new FileInfo(keyPath);
// Create new FileSecurity
FileSecurity keyFileSecurity = keyFileInfo.GetAccessControl();
keyFileSecurity.AddAccessRule(new FileSystemAccessRule(user, FileSystemRights.Read, AccessControlType.Allow));
// Apply file security to the file
keyFileInfo.SetAccessControl(keyFileSecurity);
}
Когда я запускаю свою программу и проверяю файл секретного ключа, который я вижу, например, «Сетевая служба» была добавлена в список разрешений.
Отлично, это работает, но когда WCF пытается использовать закрытый ключ, он не может получить к нему доступ.
Глядя на certlm, сертификат -> Все задачи -> Управление личными ключами .. Я вижу что моего пользователя нет в списке. Добавление моего пользователя через GUI решает проблему, но мне нужно сделать это в коде !!