Как я могу установить сертификат в локальном хранилище программ с помощью c#?



.net wcf (3)

У меня есть сертификат, созданный с помощью MakeCert. Я хочу использовать этот сертификат для безопасности сообщений WCF с помощью PeerTrust. Как я могу программно установить сертификат в хранилище сертификатов локального компьютера «доверенные люди» с помощью c # или .NET?

У меня есть файл CER, но также можно создать PFX.

https://ffff65535.com


Вместо того, чтобы устанавливать сертификат в LocalMachine, который требует повышенных привилегий, вы можете добавить его в «CurrentUser» (работает для меня).

X509Store store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite);
store.Add(cert); //where cert is an X509Certificate object
store.Close();

Мне пришлось использовать X509KeyStorageFlags. PersistKeySet | X509KeyStorageFlags. Флаги MachineKeySet для устранения ошибки «Keyset не существует» , возникшей позже при попытке использовать сертификат:

X509Certificate2 certificate = new X509Certificate2(pfxPath, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);
using (X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine))
{
     store.Open(OpenFlags.ReadWrite);
     store.Add(certificate);
     store.Close();
}

Благодаря этой статье: закрытый ключ сертификата в хранилище сертификатов не читается


Я считаю, что это правильно:

using (X509Store store = new X509Store(StoreName.TrustedPeople, StoreLocation.LocalMachine)) 
{
   store.Open(OpenFlags.ReadWrite);
   store.Add(cert); //where cert is an X509Certificate object
}




makecert