2012-02-02 3 views
0

Как импортировать программно закрытый ключ в локальное хранилище ключей?Как импортировать программно закрытый ключ в локальное хранилище ключей?

На самом деле я проверяю этот код:

private static void InstallCertificate(string certificatePath, string certificatePassword, StoreName store) { 
     try { 
      var serviceRuntimeUserCertificateStore = new X509Store(store, StoreLocation.LocalMachine); 
      serviceRuntimeUserCertificateStore.Open(OpenFlags.ReadWrite); 

      X509Certificate2 cert; 

      try { 
       cert = new X509Certificate2(certificatePath, certificatePassword); 
      } catch(Exception ex) { 
       Console.WriteLine("Failed to load certificate " + certificatePath); 
       throw new DataException("Certificate appeared to load successfully but also seems to be null.", ex); 
      } 

      serviceRuntimeUserCertificateStore.Add(cert); 
      serviceRuntimeUserCertificateStore.Close(); 
     } catch(Exception) { 
      Console.WriteLine("Failed to install {0}. Check the certificate index entry and verify the certificate file exists.", certificatePath); 
     } 
    } 

Все пытается получить NetworkService маркер не удалось пока. Код here не работает с правами администратора.

Код, приведенный выше, импортирует закрытый ключ в исполняемый пользовательский instat локальной машины. Что мне делать?

ответ

1

В MSDN есть solution. Просто добавьте флаг X509KeyStorageFlags.MachineKeySet и он отлично работает:

cert = new X509Certificate2(certificatePath, 
          certificatePassword, 
          X509KeyStorageFlags.MachineKeySet); 

 Смежные вопросы

  • Нет связанных вопросов^_^