Как я могу сгенерировать сертификат подписи Identity Server

В образцах сервера идентификации мы находим такой код в Startup.cs

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

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

Как я могу заменить это для производственных сценариев?

Ответы

Ответ 1

Получите выделенный сертификат - либо через свой PKI, либо с самогенерирующим:

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

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

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

Ответ 2

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

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];
    }
}

Ответ 4

Недавно я решил обновить процесс выдачи подписей на токен. Если вы используете 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"

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

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