Предоставить пользователю разрешение на закрытый ключ - PullRequest
0 голосов
/ 05 марта 2020

установка службы 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 решает проблему, но мне нужно сделать это в коде !!

1 Ответ

0 голосов
/ 11 марта 2020

Поставщик услуг шифрования (Microsoft RSA SChannel Cryptographi c Поставщик)

Ключи расположены в C:\ProgramData\Application Data\Microsoft\Crypto\RSA\MachineKeys, а установка нормального разрешения для файла здесь отражается в certlm.msc.

CSP

Crypto Next Generation (поставщик хранилища ключей Microsoft)

Ключи расположены в C:\ProgramData\Application Data\Microsoft\Crypto\Keys, а установка нормального разрешения для файла здесь отражена в certlm.msc.

CNG

Сводка

Убедитесь, что вы изменили права доступа к нужному файлу в нужном месте.

...