Как включить TLS 1.2 в Asp.Net Core 3.1

Aug 17 2020

Я работаю над проектом Asp.Net Core 3.1. Тестирую локально. Я начал получать ошибки как

Ваше соединение не полностью безопасно. Этот сайт использует устаревшую конфигурацию безопасности, которая может раскрыть вашу информацию (например, пароли, сообщения или кредитные карты) при ее отправке на этот сайт. NET :: ERR_SSL_OBSOLETE_VERSION

Соединение, используемое для загрузки этого сайта, использует TLS 1.0 или TLS 1.1, которые устарели и будут отключены в будущем. После отключения пользователи не смогут загружать этот сайт. Сервер должен включить TLS 1.2 или новее.

Я даже включил TLS 1.2 из Program.cs, как показано ниже -

public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.ConfigureKestrel(serverOptions =>
                {
                    serverOptions.ConfigureHttpsDefaults(co =>
                    {
                        co.SslProtocols = SslProtocols.Tls12;
                    });
                }).UseStartup<Startup>();
            });

Но все та же ошибка.

Не могли бы вы подсказать, как решить эту проблему?

Ответы

4 Vikram Sep 02 2020 at 19:19

Чтобы исправить ошибку, я попробовал решение . Это не помогло. Метод , который я попытался было предложено здесь , который, согласно автору, как представляется, работа только для ASP.NET 2.0 ядра.

Я просмотрел параметры конфигурации и обнаружил, что по умолчанию ASP.NET Core 3.1 использует для запросов TLS 1.1 и TLS 1.2 . Итак, нам не нужно ничего делать со стороны кода.

В конце концов я наткнулся на статью, в которой рассказывается:

Windows 7 поддерживает TLS 1.1 и TLS 1.2. Но по умолчанию эти версии протокола на нем не включены. В Windows 8 и выше этот протокол включен по умолчанию.

Итак, это была настоящая причина ошибки. Я решил проблему, включив TLS 1.2 в редакторе реестра. Даже Microsoft предложила такое же решение .

Надеюсь, это сэкономит чужое время.

1 RoarS. Aug 18 2020 at 00:34

Пожалуйста беги

dotnet dev-certs https --trust

Ваша программа # CreateHostBuilder должна выглядеть так (по умолчанию)

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });