web-dev-qa-db-fra.com

Comment générer le certificat de signature Identity Server

Dans les exemples de serveur d'identité, nous trouvons un code comme celui-ci dans Startup.cs

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

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

Comment pourrais-je remplacer cela pour les scénarios de production?

19
sunil

Obtenez un certificat dédié - soit via votre PKI ou auto-généré:

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

Importez la paire de clés dans le magasin de certificats Windows et chargez-la à partir de là lors de l'exécution.

Pour renforcer la sécurité, certaines personnes déploient les clés sur un appareil dédié (appelé HSM) ou sur une machine dédiée (par exemple derrière un pare-feu). ITokenSigningService permet de déplacer la signature de jeton réelle vers cette machine distincte.

12
leastprivilege

Pour mémoire, le code proposé dans l'image postée par 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];
    }
}
16
Eric Boumendil

Voici comment je le charge à partir d'une empreinte numérique dans ma configuration: Cliquez ici pour voir l'image

5
RuSs

Récemment, j'ai décidé de réorganiser mon processus d'émission de signature de jetons. Si vous exécutez Windows 10, vous pouvez utiliser l'applet de commande powershell génial appelée New-SelfSignedCertificate .

Voici mon exemple d'utilisation:

    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"

Assurez-vous que vous exécutez la commande en tant qu'administrateur. Vous pouvez obtenir les détails du certificat en ouvrant certlm.msc . Il doit être stocké sous Personal\Certificates.

La plupart des indicateurs doivent être évidents, à l'exception de celui -TextExtention. Il spécifie qu'un champ Utilisation de clé renforcée est défini sur la valeur "Signature de code". Vous pouvez jouer avec l'algorithme utilisé, la longueur de clé, voire ajouter des extensions en vous référant à la page documentation suivante.

5
Evdzhan Mustafa