Самоподписанный сертификат, работающий для IdentityServer в CurrentUser, но не в LocalMachine - PullRequest
0 голосов
/ 24 декабря 2018

Использование команды Powershell New-SelfSignedCertificate Я создал сертификат для использования с Identity Server.Моя команда Powershell выглядела так:

PS> New-SelfSignedCertificate -Subject "CN=mycert" -KeySpec "Signature" -CertStoreLocation "Cert:\localMachine\My\" -NotAfter "12/12/2021"

(Для сертификата пользователя я использовал Cert:\CurrentUser\My\)

Код Identity Server выглядит следующим образом:

X509Certificate2 cert = null;
using (X509Store certStore = new X509Store(StoreName.My, StoreLocation.LocalMachine))
{
    certStore.Open(OpenFlags.ReadOnly);
    X509Certificate2Collection certCollection = certStore.Certificates.Find(
        X509FindType.FindByThumbprint,
        thumbprint,
        true);

    if (certCollection.Count > 0)
    {
        cert = certCollection[0];                    
    }
}

services
    .AddIdentityServer()
    //.AddDeveloperSigningCredential()
    .AddSigningCredential(cert)
    ...

Для пользовательского сертификата я использовал StoreLocation.CurrentUser.Когда я запускаю пользовательский сертификат, он работает нормально, но на локальном компьютере сертификат (я проверил в MMC, он устанавливает сертификат правильно), он не находит действительный сертификат.Просто для ясности, если я изменю:

X509Certificate2Collection certCollection = certStore.Certificates.Find(
    X509FindType.FindByThumbprint,
    thumbprint,
    true);

на:

X509Certificate2Collection certCollection = certStore.Certificates.Find(
    X509FindType.FindByThumbprint,
    thumbprint,
    false);

Тогда он найдет сертификат, но он явно не действителен.Может кто-нибудь сказать мне, почему это так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...