ASP.NET Core 응용 프로그램에 SSL 적용하기

등록일시: 2017-05-18 08:00,  수정일시: 2017-05-18 08:00
조회수: 9,058
이 문서는 ASP.NET Core 기술을 널리 알리고자 하는 개인적인 취지로 제공되는 번역문서입니다. 이 문서에 대한 모든 저작권은 마이크로소프트에 있으며 요청이 있을 경우 언제라도 게시가 중단될 수 있습니다. 번역 내용에 오역이 존재할 수 있고 주석은 번역자 개인의 의견일 뿐이며 마이크로소프트는 이에 관한 어떠한 보장도 하지 않습니다. 번역이 완료된 이후에도 대상 제품 및 기술이 개선되거나 변경됨에 따라 원문의 내용도 변경되거나 보완되었을 수 있으므로 주의하시기 바랍니다.
본문에서는 ASP.NET Core 응용 프로그램에서 모든 요청에 SSL을 필수로 강제하거나 모든 HTTP 요청을 HTTPS로 재지정하는 방법, 그리고 IIS Express에 SSL을 설정하는 방법에 대해서 알아봅니다.

본문에서는 다음과 같은 내용을 살펴봅니다:

  • 모든 요청에 SSL을 필수로 강제하는 방법 (HTTPS 요청만 허용하는 방법)
  • 모든 HTTP 요청을 HTTPS로 재지정하는 방법
  • SSL/HTTPS를 사용하도록 IIS Express를 설정하는 방법

SSL 적용하기

RequireHttpsAttribute는 SSL을 필수로 지정하기 위해서 사용됩니다. 개별적으로 컨트롤러나 메서드에 이 어트리뷰트를 지정할 수도 있고, 다음과 같이 전역으로 구성할 수도 있습니다.

Startup 클래스의 ConfigureServices 메서드에 다음과 같은 코드를 추가합니다:

// Requires using Microsoft.AspNetCore.Mvc;
public void ConfigureServices(IServiceCollection services)
{
    services.Configure<MvcOptions>(options =>
    {
        options.Filters.Add(new RequireHttpsAttribute());
    });

위의 예제에 강조된 코드는 모든 요청에 HTTPS를 사용하도록 강제하며, 그 결과 HTTP 요청은 무시됩니다. 반면, 다음 예제에 강조된 코드는 모든 HTTP 요청을 HTTPS로 재지정합니다:

// Requires using Microsoft.AspNetCore.Rewrite;
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    var options = new RewriteOptions()
        .AddRedirectToHttps();

재지정에 관한 보다 자세한 정보는 URL Rewriting Middleware 문서를 참고하시기 바랍니다.

HTTPS를 전역으로 요구하는 방식이 보안상 가장 안전한 방법입니다 (options.Filters.Add(new RequireHttpsAttribute());). 컨트롤러나 메서드에 개별적으로 [RequireHttps] 어트리뷰트를 적용하는 방식은 프로젝트에 새로운 컨트롤러나 메서드가 추가될 경우, SSL의 보호를 받을 수 있다는 보장이 없다는 단점이 있습니다.

SSL/HTTPS를 사용하도록 IIS Express 설정하기

  • 솔루션 탐색기에서 마우스 오른쪽 버튼으로 프로젝트를 클릭한 다음, 속성(Properties)을 선택합니다.
  • 좌측 패인에서 디버그(Debug)를 선택합니다.
  • SSL 사용(Enable SSL)을 체크합니다.
  • SSL URL을 복사한 다음, 앱 URL(App URL)에 붙여 넣습니다.