Asp.Net Core 3.1에서 TLS 1.2를 활성화하는 방법

Aug 17 2020

Asp.Net Core 3.1 프로젝트에서 일하고 있습니다. 로컬에서 테스트 중입니다. 나는 오류가 발생하기 시작했습니다.

귀하의 연결이 완전히 안전하지 않습니다.이 사이트는 오래된 보안 구성을 사용하므로이 사이트로 전송 될 때 귀하의 정보 (예 : 암호, 메시지 또는 신용 카드)가 노출 될 수 있습니다. NET :: ERR_SSL_OBSOLETE_VERSION

이 사이트를로드하는 데 사용 된 연결은 TLS 1.0 또는 TLS 1.1을 사용했으며, 이는 더 이상 사용되지 않으며 향후 비활성화됩니다. 비활성화되면 사용자는이 사이트를로드 할 수 없습니다. 서버는 TLS 1.2 이상을 활성화해야합니다.

아래와 같이 Program.cs에서 TLS 1.2를 활성화했습니다.

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 Core 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를 활성화하여 문제를 해결했습니다. 마이크로 소프트도 같은 해결책을 제시했다 .

다른 사람의 시간을 절약하기를 바랍니다.

1 RoarS. Aug 18 2020 at 00:34

실행하십시오

dotnet dev-certs https --trust

Program # CreateHostBuilder는 다음과 같아야합니다 (기본값).

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