Я пытаюсь загрузить сертификат с закрытым ключом из файла pfx и импортировать его в хранилище сертификатов LocalMachine/My (Personal). Мой код работает отлично, за исключением того, когда я осматриваю сертификат в магазине он говоритНе удается импортировать сертификат pfx с закрытым ключом для хранения из .net C# 3.5 на сервере Windows 2012
«Связанный закрытый ключ не может быть найден»
и дальше, Certutil говорит
«Не удается найти сертификат и закрытый ключ для дешифрования "
Странная часть заключается в том, что мой код отлично работает в окне разработки Windows 7, но не на Windows Server 2008 R2 или в 2012 году. Также странно, что если я вручную импортирую файл pfx с помощью mmc, частный ключ, похоже, сохраняется должным образом.
Вот код, я использую, чтобы загрузить файл и импорт:
// load the certificate from pfx file
X509Certificate2 cert = new X509Certificate2(filePath, pfxPassword, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);
// import to the store
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite); //tried MaxAllowed as well
store.Add(caCert);
store.Close();
Любые идеи? Для получения дополнительной информации я также генерирую сертификат в коде на более раннем этапе, используя BouncyCastle. На этом этапе я столкнулся с некоторыми проблемами, сохраняющими закрытый ключ, но был решен с ответа от this question. Также код, который пытается импортировать, работает как администратор.
См. Этот ответ, http://stackoverflow.com/questions/749654/associate-private-key-to-certificate-for-pfxexportcertstoreex – Raj
@Raj благодарит за указатель, но я явно не работаю с CryptoAPI на момент. Мне интересно, есть ли способ сделать это, используя C# System.Security.Cryptography.X509Certificates или связанные пространства имен ... – rusty