IIS 7 이상에서 SSL을 설정하는 방법

작성자 : Saad Ladki

소개

사이트에 대한 SSL(Secure Sockets Layer)을 구성하는 단계는 IIS 7 이상 및 IIS 6.0에서 동일하며 다음을 포함합니다.

  • 적절한 인증서를 가져옵니다.
  • 사이트에서 HTTPS 바인딩을 만듭니다.
  • 사이트에 요청을 만들어 테스트합니다.
  • 필요에 따라 SSL 옵션을 구성합니다. 즉, SSL을 요구 사항으로 만듭니다.

이 문서에서는 SSL에 대한 몇 가지 기본 정보를 제공하고 다음과 같은 방법으로 SSL을 사용하도록 설정하는 방법을 보여 줍니다.

  • IIS 관리자 사용.
  • AppCmd.exe 명령줄 도구를 사용합니다.
  • Microsoft.Web.Administration을 통해 프로그래밍 방식으로
  • WMI 스크립트 사용.

이 자료에는 다음과 같은 섹션이 포함되어 있습니다.

SSL 구성

사용자 고유의 서버에서 또는 클라우드에서 웹 사이트를 실행하든, SSL을 사용하여 사이트를 보호하는 것은 사용자에게 매우 중요합니다. 많은 웹 사이트가 사용자의 개인 정보를 보호하기 위해 웹 사이트를 사용하고 있기 때문일 수 있습니다. 서버에서 SSL을 구성해야 하는 경우 SSL 구현이 IIS 6.0에서 IIS 7 이상으로 변경되었다는 것을 알아야 합니다. Windows Server 2003의 IIS 6.0에서는 모든 SSL 구성이 IIS 메타베이스에 저장되었고 사용자 모드에서 암호화/암호 해독이 발생했습니다(커널/사용자 모드 전환이 많이 필요). IIS 7 이상에서 HTTP.sys 커널 모드에서 SSL 암호화/암호 해독을 처리하므로 IIS 6.0에서 경험한 것보다 IIS 7 이상의 보안 연결에 대한 성능이 최대 20% 향상됩니다.

커널 모드에서 SSL을 사용하려면 SSL 바인딩 정보를 두 곳에 저장해야 합니다. 먼저 바인딩은 사이트의 %windir%\System32\inetsrv\config\applicationHost.config 저장됩니다. 사이트가 시작되면 IIS는 바인딩을 HTTP.sys 보내고 HTTP.sys 지정된 IP:Port(모든 바인딩에 대해 작동)에 대한 요청을 수신 대기하기 시작합니다. 둘째, 바인딩과 연결된 SSL 구성은 HTTP.sys 구성에 저장됩니다. 명령 프롬프트에서 netsh 명령을 사용하여 다음 예제와 같이 HTTP.sys 저장된 SSL 바인딩 구성을 확인합니다.

netsh http show sslcert

클라이언트가 SSL 협상을 연결하고 시작하면 HTTP.sys 클라이언트가 연결된 IP:포트 쌍에 대한 SSL 구성을 찾습니다. HTTP.sys SSL 구성에는 SSL 협상이 성공하기 전에 인증서 해시와 인증서 저장소 이름이 포함되어야 합니다.

문제 해결 팁: SSL 바인딩에 문제가 있는 경우 바인딩이 ApplicationHost.config 구성되어 있는지, HTTP.sys 저장소에 바인딩에 대한 유효한 인증서 해시 및 저장소 이름이 포함되어 있는지 확인합니다.

인증서 선택

인증서를 선택할 때 최종 사용자가 인증서를 사용하여 서버의 ID를 확인할 수 있도록 하시겠습니까? 그렇다면 인증서 요청을 만들고 VeriSign 또는 GeoTrust와 같은 알려진 CA(인증 기관)에 해당 요청을 보내거나 인트라넷 도메인의 온라인 CA에서 인증서를 가져옵니다. 브라우저가 일반적으로 서버 인증서에서 확인하는 세 가지 사항이 있습니다.

  1. 현재 날짜와 시간이 인증서의 "유효 기간 시작" 및 "유효 기간 종료" 날짜 범위 내에 있습니다.
  2. 인증서의 CN(일반 이름)이 요청의 호스트 헤더와 일치합니다. 예를 들어 클라이언트가 https://www.contoso.com/에 요청하는 경우 CN이 www.contoso.com이어야 합니다.
  3. 인증서의 발급자 가 알려진 신뢰할 수 있는 CA임을 확인합니다.

이러한 검사 중 하나 이상이 실패하면 브라우저에서 사용자에게 경고를 표시합니다. 최종 사용자가 개인적으로 아는 사람이 아닌 인터넷 사이트 또는 인트라넷 사이트가 있는 경우 항상 이러한 세 가지 매개 변수가 유효한지 확인해야 합니다.

자체 서명된 인증서는 컴퓨터에서 만든 인증서입니다. 최종 사용자가 테스트 환경과 같이 서버를 신뢰하는 것이 중요하지 않은 환경에서 유용합니다.

AppCmd 사용

AppCmd.exe 사용하여 인증서를 요청하거나 만들 수 없습니다. AppCmd.exe 사용하여 SSL 바인딩을 만들 수도 없습니다.

SSL 설정 구성

AppCmd.exe 사용하여 Access 섹션에서 sslFlags 특성을 수정하여 서버 HTTPS 연결만 허용하도록 사이트를 구성할 수 있습니다. 예를 들어 다음 명령을 사용하여 ApplicationHost.config 파일(예: commitPath:APPHOST)에서 "기본 웹 사이트"에 대해 이 설정을 구성할 수 있습니다.

%windir%\system32\inetsrv>AppCmd set config "Default Web Site" -commitPath:APPHOST -section:access -sslFlags:Ssl

성공하면 다음 메시지가 표시됩니다.

Applied configuration changes to section "system.webServer/security/access" for "MACHINE/WEBROOT/APPHOST/Default Web Site" at configuration commit path "MACHINE/WEBROOT/APPHOST"

참고

128비트 SSL이 필요하려면 sslFlags 값을 Ssl128로 변경합니다.

다음 예제에서는 기본 웹 사이트에 대한 액세스/>섹션 설정을 보는 <방법을 보여 줍니다. sslFlags 특성이 성공적으로 설정되었습니다.

%windir%\system32\inetsrv>AppCmd list config "Default Web Site" -section:access

명령을 실행하면 ApplicationHost.config 파일에 다음 항목이 표시됩니다.

<system.webServer>
  <security>
    <access flags="Script, Read" sslFlags="Ssl" />
  </security>
</system.webServer>

WMI 사용

WebAdministration WMI 네임스페이스를 사용하여 인증서를 요청하거나 만들 수 없습니다.

SSL 바인딩 만들기

다음 스크립트는 새 SSL 바인딩을 만드는 방법과 HTTP.sys 및 IIS 모두에 대한 적절한 구성을 추가하는 방법을 보여 줍니다.

Set oIIS = GetObject("winmgmts:root\WebAdministration")
'''''''''''''''''''''''''''''''''''''''''''''
' CREATE SSL BINDING
'''''''''''''''''''''''''''''''''''''''''''''

oIIS.Get("SSLBinding").Create _ 
   "*", 443, "4dc67e0ca1d9ac7dd4efb3daaeb15d708c9184f8", "MY"
'''''''''''''''''''''''''''''''''''''''''''''
' ADD SSL BINDING TO SITE
'''''''''''''''''''''''''''''''''''''''''''''

Set oBinding = oIIS.Get("BindingElement").SpawnInstance_
oBinding.BindingInformation = "*:443:"
oBinding.Protocol = "https"

Set oSite = oIIS.Get("Site.Name='Default Web Site'")
arrBindings = oSite.Bindings

ReDim Preserve arrBindings(UBound(arrBindings) + 1)
Set arrBindings(UBound(arrBindings)) = oBinding

oSite.Bindings = arrBindings
Set oPath = oSite.Put_

참고

인증서 해시 및 저장소는 서버에서 실제 기능 인증서를 참조해야 합니다. 인증서 해시 및/또는 저장소 이름이 가짜이면 오류가 반환됩니다.

SSL 설정 구성

다음 스크립트는 IIS WMI 공급자를 사용하여 SSL 설정을 설정하는 방법을 보여 줍니다. 이 값은 IIS_Schema.xml 파일에서 찾을 수 있습니다.

CONST SSL = 8  
Set oIIS = GetObject("winmgmts:root\WebAdministration")  
Set oSection = oIIS.Get(\_  
 "AccessSection.Path='MACHINE/WEBROOT/APPHOST',Location='Default Web Site'")  
oSection.SslFlags = oSection.SslFlags OR SSL  
oSection.Put\_ <a id="IISManager"></a>

IIS 관리자

인증서 가져오기

treeview에서 서버 노드를 선택하고 listview에서 서버 인증서 기능을 두 번 클릭합니다.
서버 인증서가 선택된 ALEXIS E 3 L H 서버 노드 홈의 스크린샷

작업 창에서 Self-Signed 인증서 만들기...를 클릭합니다.
자체 서명된 인증서 만들기가 강조 표시된 서버 인증서 작업 창의 스크린샷

새 인증서의 이름을 입력하고 확인을 클릭합니다.

이제 자체 서명된 인증서가 있습니다. 인증서는 "서버 인증" 사용으로 표시됩니다. 즉, HTTP SSL 암호화 및 서버 ID 인증을 위한 서버 쪽 인증서로 를 사용합니다.

SSL 바인딩 만들기

트리 보기에서 사이트를 선택하고 작업 창에서 바인딩...을 클릭합니다. 그러면 웹 사이트에 대한 바인딩을 만들고, 편집하고, 삭제할 수 있는 바인딩 편집기가 표시됩니다. 추가...를 클릭하여 사이트에 새 SSL 바인딩을 추가합니다.

기본 사이트 바인딩이 있는 사이트 바인딩 대화 상자의 스크린샷

새 바인딩에 대한 기본 설정은 포트 80에서 HTTP로 설정됩니다. 유형 드롭다운 목록에서 https를 선택합니다. SSL 인증서 드롭다운 목록에서 이전 섹션에서 만든 자체 서명 된 인증서를 선택한 다음 확인을 클릭합니다.

유형이 H T TP S로 설정되고 SSL 인증서가 테스트 인증서로 설정된 사이트 바인딩 추가 대화 상자의 스크린샷

이제 사이트에 새 SSL 바인딩이 있으며, 남아 있는 것은 작동하는지 확인하는 것입니다.
H T T P 및 H T T P S 바인딩이 모두 있는 사이트 바인딩 대화 상자의 스크린샷

SSL 바인딩 확인

작업 창의 웹 사이트 찾아보기에서 방금 만든 바인딩과 연결된 링크를 클릭합니다.
별표 콜론 찾아보기 443 또는 H T TP S가 강조 표시된 작업 창의 웹 사이트 찾아보기 섹션 스크린샷

자체 서명된 인증서가 신뢰할 수 있는 CA(인증 기관)가 아닌 컴퓨터에서 발급했기 때문에 IE(Internet Explorer) 7 이상이 오류 페이지를 표시합니다. 인증서를 로컬 컴퓨터에 저장하거나 도메인에 대한 그룹 정책 신뢰할 수 있는 루트 인증 기관 목록에 추가하면 IE 7 이상이 인증서를 신뢰합니다. 이 웹 사이트를 계속 탐색합니다(권장하지 않음).를 클릭합니다.
보안 인증서 오류를 표시하는 Internet Explorer의 스크린샷 이 웹 사이트로 계속 진행(권장되지 않음)이 강조됩니다.

SSL 설정 구성

사이트에서 SSL을 요구하거나 클라이언트 인증서와 특정 방식으로 상호 작용하도록 하려면 SSL 설정을 구성합니다. 트리 보기에서 사이트 노드를 클릭하여 사이트의 홈페이지로 돌아갑니다. 가운데 창에서 SSL 설정 기능을 두 번 클릭합니다.

SSL이 필요하고 클라이언트 인증서를 무시하는 SSL 설정 창의 스크린샷

요약

이 연습에서는 명령줄 도구 AppCmd.exe, 스크립팅 공급자 WMI 및 IIS Manager를 사용하여 IIS에서 SSL을 설정했습니다.