2016-03-08 10 views
16

w próbkach serwerów tożsamości możemy znaleźć kod takiego w Startup.csJak wygenerować certyfikat podpisujący Identity Server

var certFile = env.ApplicationBasePath + "\\idsrv3test.pfx"; 

var signingCertificate = new X509Certificate2(certFile, "idsrv3test"); 

Jak bym go o zastąpienie tego dla scenariuszy produkcyjnych?

Odpowiedz

8

otrzymać Dedykowany cert - albo za pośrednictwem PKI lub samodzielnego generowania jednego:

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

zaimportować klucz w magazynie certyfikatów systemu Windows i załaduj go w czasie wykonywania.

Aby zwiększyć bezpieczeństwo, niektóre osoby wdrażają klucze do dedykowanego urządzenia (zwanego HSM) lub do dedykowanego komputera (np. Za firewallem). ITokenSigningService umożliwia przeniesienie faktycznego podpisu tokena na tę oddzielną maszynę.

12

Dla przypomnienia, kod zaproponowany w obrazie wysłana przez Russ:

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

w .NET 4.6 'X509Store' implementujący' IDisposable', więc nie trzeba 'store.Close()'. Więcej szczegółów tutaj http://stackoverflow.com/questions/18475558/what-is-the-implication-of-not-using-x509store-close-method – Kuncevic

+0

@Kuncevic: dzięki, zaktualizowałem próbkę. –

0

Ostatnio postanowiłem zreorganizować mój symboliczny proces podpisywania wydawania. Jeśli używasz systemu Windows 10, możesz użyć zaawansowanego polecenia cmdlet Powerhell o nazwie New-SelfSignedCertificate.

Oto mój przykład użycia:

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" 

Upewnij się, że działa z polecenia jako administrator. Szczegóły certyfikatu można uzyskać, otwierając certlm.msc. Powinien on być przechowywany poniżej Personal \ Certificates.

Większość flag powinna być oczywista, poza tekstem -TextExtention. Określa, że ​​pole Ulepszone użycie klucza jest ustawione na wartość "Podpisywanie kodu". Możesz grać z użyciem algorytmu, długości klucza, a nawet dodawać rozszerzenia, odnosząc się do następującej strony: documentation.

Powiązane problemy