IIS Express с использованием «мнимого» SSL-сертификата - PullRequest
0 голосов
/ 03 марта 2020

Я борюсь с этим уже пару недель. Я исчерпал свое Google-фу и мне нужна твоя помощь.

Я хочу удалить сертификат, к которому по умолчанию IIS Express (срок действия которого истекает), и использовать тот, который создается, когда я "чиню" IIS Express.

IIS Express использует сертификат SSL, который я не могу найти нигде на моем P C. В настоящее время он НЕ использует сертификат, который он создает во время ремонта. Он использует какой-то сертификат rando, который я нигде не могу найти на своем компьютере.

Я прошел через оснастку mm c 100 раз, запускал команды dos и powershell, искал в моем реестре, искал через файловую систему я даже прошел 100 тыс. строк монитора процессов, пытаясь выяснить, откуда он тянет сертификат. Я нигде не могу найти сертификат, который он использует.

Windows 10. Это дамп сертификата с соответствующими записями localhost:

Location   : CurrentUser

Name : Root

Subject      : CN=localhost
Issuer       : CN=localhost
Thumbprint   : 7019C23346CD99CDE8ED35F2A712410F3E5A03DB
FriendlyName : ASP.NET Core HTTPS development certificate
NotBefore    : 2/28/2020 8:26:43 AM
NotAfter     : 2/27/2021 8:26:43 AM
Extensions   : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, 
               System.Security.Cryptography.Oid...}

Subject      : CN=localhost
Issuer       : CN=localhost
Thumbprint   : 4671C5C7DC49E26F318C30911B4494D2511E665E
FriendlyName : IIS Express Development Certificate
NotBefore    : 2/28/2020 8:26:16 AM
NotAfter     : 2/27/2025 6:00:00 PM
Extensions   : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid}

Name: My

Subject      : CN=localhost
Issuer       : CN=localhost
Thumbprint   : 7019C23346CD99CDE8ED35F2A712410F3E5A03DB
FriendlyName : ASP.NET Core HTTPS development certificate
NotBefore    : 2/28/2020 8:26:43 AM
NotAfter     : 2/27/2021 8:26:43 AM
Extensions   : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, 
               System.Security.Cryptography.Oid...}

Subject      : CN=localhost
Issuer       : CN=localhost
Thumbprint   : 4671C5C7DC49E26F318C30911B4494D2511E665E
FriendlyName : IIS Express Development Certificate
NotBefore    : 2/28/2020 8:26:16 AM
NotAfter     : 2/27/2025 6:00:00 PM
Extensions   : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid}

И это сертификат, который обслуживается на Chrome:

Serial number: 00e7573e7ee6f8a315
Signature algorithm: sha256RSA
Issuer: localhost
Subject: localhost
1.3.6.1.4.1.311.84.1.1: ASP.NET Core HTTPS development certificate
Thumbprint: f3b46e7bd1d6a66d150948342ffe00ebb42f33ac

У кого-нибудь есть идеи? Дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 05 марта 2020

Kestrel пытается найти сертификат по умолчанию для проекта. Этот сертификат НЕ хранится в хранилище ключей компьютера. Он хранится в файловой системе в виде файла .pfx. Путь:% appData% \ ASP .NET \ https.

. Я узнал об этом, прочитав исходный код Kestrel KestrelConfigurationLoader.TryGetCertificatePath ():

    var hostingEnvironment = Options.ApplicationServices.GetRequiredService<IHostEnvironment>();
    var appName = hostingEnvironment.ApplicationName;

    // This will go away when we implement
    // https://github.com/aspnet/Hosting/issues/1294
    var appData = Environment.GetEnvironmentVariable("APPDATA");
    var home = Environment.GetEnvironmentVariable("HOME");
    var basePath = appData != null ? Path.Combine(appData, "ASP.NET", "https") : null;
    basePath = basePath ?? (home != null ? Path.Combine(home, ".aspnet", "https") : null);
    path = basePath != null ? Path.Combine(basePath, $"{appName}.pfx") : null;
    return path != null;

Я удалил ключи, которые были в папке, и это решило мою проблему. Счастливые дни!

...