2016-03-08 12 views

ответ

8

Получить специальный сертификат - либо через ваши ИКА или самостоятельно генерировать одно:

http://brockallen.com/2015/06/01/makecert-and-creating-ssl-or-signing-certificates/

Импорт ключ пара в хранилище сертификатов Windows и загружать его оттуда во время выполнения.

Чтобы повысить безопасность, некоторые люди разворачивают ключи на выделенное устройство (называемое HSM) или на выделенный компьютер (например, за брандмауэром). ITokenSigningService позволяет перемещать фактическую подпись токена на эту отдельную машину.

12

Для записи, код, предложенный в изображении, которое разместил Расс:

options.SigningCertificate = LoadCertificate(); 

public X509Certificate2 LoadCertificate() 
{ 
    string thumbPrint = "104A19DB7AEA7B438F553461D8155C65BBD6E2C0"; 
    // Starting with the .NET Framework 4.6, X509Store implements IDisposable. 
    // On older .NET, store.Close should be called. 
    using (var store = new X509Store(StoreName.My, StoreLocation.LocalMachine)) 
    { 
     store.Open(OpenFlags.ReadOnly); 
     var certCollection = store.Certificates.Find(X509FindType.FindByThumbprint, thumbPrint, validOnly: false); 
     if (certCollection.Count == 0) 
      throw new Exception("No certificate found containing the specified thumbprint."); 

     return certCollection[0]; 
    } 
} 
+1

in .NET 4.6 'X509Store', реализующий' IDisposable', поэтому не нужно 'store.Close()'. Подробнее здесь http://stackoverflow.com/questions/18475558/what-is-the-implication-of-not-using-x509store-close-method – Kuncevic

+0

@ Kuncevic: спасибо, я обновил образец. –

0

Недавно я решил обновить свой маркер процесса подписания выдачи. Если вы используете Windows 10, вы можете использовать командную команду powershell с именем New-SelfSignedCertificate.

Вот мой пример использования:

New-SelfSignedCertificate -Type Custom 
-Subject "CN=TokenSigningForIdServer" 
-TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3") 
-KeyUsage DigitalSignature 
-KeyAlgorithm RSA 
-KeyLength 2048 
-CertStoreLocation "Cert:\LocalMachine\My" 

Убедитесь, что вы запускаете команду в качестве администратора. Вы можете получить информацию о сертификате, открыв certlm.msc. Он должен храниться ниже Personal \ Certificates.

Большинство флагов должно быть очевидно, кроме одного -TextExtention. Он указывает, что для поля «Расширенное использование ключа» установлено значение «Подписание кода». Вы можете поиграть с используемым алгоритмом, длиной ключа, даже добавить экстензии, ссылаясь на следующую страницу documentation.