x509Certificate2 возвращает ноль - SSL-сертификат - PullRequest
0 голосов
/ 17 июня 2019

Я установил сертификат ssl, но когда я использую certCollection.Find by Extension, он возвращает ноль.

private X509Certificate2 GetCertificateFromStore()
    {

        X509Certificate2 x509Certificate2;

        var aspNetCoreEnvironment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
        if (string.Equals(aspNetCoreEnvironment, "Development", StringComparison.OrdinalIgnoreCase))
        {
            const string aspNetHttpsOid = "1.3.1.1.3.1.1.84.1.1";
            const string cnName = "CN=localhost";
            using (var store = new X509Store(StoreName.My, StoreLocation.LocalMachine))
            {
                store.Open(OpenFlags.ReadOnly);
                var certCollection = store.Certificates;
                var currentCerts = certCollection.Find(X509FindType.FindByExtension, aspNetHttpsOid, true);
                currentCerts = currentCerts.Find(X509FindType.FindByIssuerDistinguishedName, cnName, true);
                x509Certificate2 = currentCerts.Count == 0 ? null : currentCerts[0];
            }
        }
    }

Примечание. Я создал самозаверяющий сертификат разработки с помощью следующих команд.

PS C:\program files\microsoft sdks\service fabric\clustersetup\secure> .\CertSetup.ps1 -Install -CertSubjectName CN=mytestcert

после установки я вижу, что сертификат создан с добавлением в доверенный корень.

enter image description here

Я делаю какую-то ошибку при создании самозаверяющего сертификата. Я не уверен.

1 Ответ

1 голос
/ 18 июня 2019

Вы сохранили сертификат в StoreLocation.CurrentUser, но ваш код ищет в StoreLocation.LocalMachine.

Кроме того, не забудьте добавить правильные ACL .

...