Я пытаюсь создать самозаверяющий сертификат «на лету» (программно) на сборке C# (таргетинг .NET 4.0
), чтобы служить в качестве корневого ЦС для создания других сертификатов. Сертификат не должен сохраняться в хранилище сертификатов Windows, я экспортирую его в файл.Запрошенная операция не поддерживается в CngKey.Create
Чтение через this question (и, в частности, @dthorpe's answer), я решил попробовать до CLR Security.
CLR Security
библиотека положить метод расширения на CngKey class, чтобы создать собственный сертификат, но я не мог добиться успеха в создании экземпляра CngKey
с:
var key = CngKey.Create(CngAlgorithm.Sha1); //same with Sha256, Sha512 and MD5
//or
var key = CngKey.Create(CngAlgorithm.Sha1, null, new CngKeyCreationParameters()
{
ExportPolicy = CngExportPolicies.AllowExport,
KeyUsage = CngKeyUsages.AllUsages,
KeyCreationOptions = CngKeyCreationOptions.MachineKey,
});
Любой из этих линий вызывает исключение:
System.Security.Cryptography.CryptographicException был необработанное
HResult = -2146893783
Message = Запрошенная операция не поддерживается.
Source=System.Core
StackTrace:
at System.Security.Cryptography.NCryptNative.CreatePersistedKey(SafeNCryptProviderHandle provider, String algorithm, String name, CngKeyCreationOptions options)
at System.Security.Cryptography.CngKey.Create(CngAlgorithm algorithm, String keyName, CngKeyCreationParameters creationParameters)
at System.Security.Cryptography.CngKey.Create(CngAlgorithm algorithm)
at Tests.Program.Main(String[] args) at Program.cs:line 51
Поиск по SO и интернет, я проверил следующее:
- Я бегу окно Windows 7 (так он поддерживает RPC как на MSDN)
- Пробовал в окне Windows Server 2012, такая же ошибка
- Процесс работает как администратор (поэтому он имеет доступ ко всем хранилищам сертификатов, так или иначе)
- Th е услуги
CNG Key Isolation
иRemote Procedure Call (RPC)
Любая помощь будет принята с благодарностью.
Это было, действительно, моя проблема. Спасибо. На странице Связанных поставщиков хранилищ CNG указано, что «Microsoft устанавливает следующие KSP, начиная с Windows Vista и Windows Server 2008. Поставщики могут создавать и устанавливать другие поставщики». – Dinei