작성자: Vaidy Gopalakrishnan
개요
IIS Express는 관리 권한 없이 가장 일반적인 웹 개발 및 테스트 작업을 수행할 수 있도록 설계되었습니다. 예를 들어 예약이 아닌 포트를 사용하여 웹 사이트를 로컬로 실행할 수 있습니다. 자체 서명된 테스트 인증서와 44300~44399 범위의 포트를 사용하여 SSL로 웹 사이트를 테스트할 수도 있습니다. 자세한 내용은 관리제기적 권한 없이 IIS Express 실행을 참조하세요.
그러나 기본적으로 사용하도록 설정되지 않은 시나리오를 테스트하기 위해 IIS Express를 사용해야 하는 경우도 있습니다. 예를 들어 IIS Express는 IIS와 같은 프로덕션 웹 서버로 설계되지 않았지만 웹 사이트에 대한 외부 액세스를 테스트해야 할 수 있습니다. 마찬가지로 SSL을 사용하거나 예약된 특정 포트 번호를 사용하여 사이트를 테스트할 수 있습니다.
기본적으로 IIS Express를 사용하여 이러한 시나리오를 테스트하는 경우 URL 바인딩 실패를 보고합니다. IIS Express에 이러한 유형의 작업을 수행할 수 있는 충분한 권한이 없기 때문에 이 문제가 발생합니다. IIS Express를 관리자로 실행하여 이러한 제한을 무시할 수 있지만 보안상의 이유로는 좋지 않습니다.
이러한 시나리오에서 IIS Express를 사용하여 테스트하는 올바른 방법은 IIS Express가 표준 권한으로 실행되어 작업을 수행할 수 있도록 HTTP.sys 구성하는 것입니다. 테스트가 완료되면 구성을 되돌리기 수 있습니다. 보안상의 이유로 이러한 작업은 관리자로 제한되며 표준(비관리자) 사용자가 수행할 수 없습니다.
HTTP.sys 정보
HTTP.sys IIS 및 IIS Express 모두에 대한 HTTP 및 SSL 트래픽을 처리하는 운영 체제 구성 요소입니다. 기본적으로 HTTP.sys 애플리케이션(IIS Express 포함)이 표준 사용자가 애플리케이션을 실행하는 경우 다음 작업을 수행하지 못하도록 합니다.
- 80 또는 443과 같은 예약된 포트 사용
- 외부 트래픽 제공
- SSL 사용
IIS Express에 대해 이러한 작업을 허용하도록 HTTP.sys 구성할 수 있습니다. Windows 7 및 Windows Vista에서는 netsh.exe 유틸리티를 사용하여 HTTP.sys 구성할 수 있습니다. Windows XP에서는 Windows XP 서비스 팩 2 지원 도구에 포함된 httpcfg.exe 명령줄 유틸리티를 사용하여 HTTP.sys 구성할 수 있습니다.
예약 포트 사용
기본적으로 IIS Express를 사용하여 8080과 같은 예약이 아닌 포트를 사용하여 웹 사이트를 실행할 수 있습니다. 그러나 80 또는 443과 같은 예약된 포트를 사용하려면 작업이 필요합니다. 아래에 설명된 단계에서는 포트 80을 통해 로컬 트래픽을 지원하려는 것으로 가정합니다.
Windows 7 또는 Windows Vista의 관리자 권한 명령 프롬프트에서 다음 명령을 실행합니다.
netsh http add urlacl url=http://localhost:80/ user=everyone
이 명령을 사용하면 관리자 권한 없이도 모든 사용자의 애플리케이션(사용자 고유의 IIS Express 인스턴스 포함)이 포트 80을 사용하여 실행할 수 있습니다. 이 액세스를 자신에게 제한하려면 "모든 사람"을 Windows ID로 대체합니다.
Windows XP에서는 관리자 권한 명령 프롬프트에서 다음 명령을 실행해야 합니다.
httpcfg set urlacl /u http://localhost:80/ /a D:(A;;GX;;;WD)
HTTP.sys 구성한 후 포트 80을 사용하도록 웹 사이트를 구성할 수 있습니다. WebMatrix 및 Visual Studio 2010 SP1 베타와 같은 도구를 사용하는 것은 매우 간단합니다. applicationhost.config 파일을 수동으로 편집하여 사이트 요소에 다음 바인딩을 포함할 수도 있습니다.
<binding protocol="http" bindingInformation="*:80:localhost"/>
이제 웹 사이트가 포트 80을 사용하여 (로컬로) 실행됩니다.
애플리케이션 테스트를 완료하면 이전 설정으로 되돌리기 HTTP.sys 합니다.
Windows 7 또는 Windows Vista의 관리자 권한 명령 프롬프트에서 다음 명령을 실행합니다.
netsh http delete urlacl url=http://localhost:80/
Windows XP에서 관리자 권한 프롬프트에서 다음 명령을 실행합니다.
httpcfg delete urlacl /u http://localhost:80/
외부 트래픽 처리
웹 사이트에서 외부 트래픽을 처리할 수 있도록 하려면 HTTP.sys 및 컴퓨터의 방화벽을 구성해야 합니다. 아래에 설명된 단계에서는 외부 트래픽이 포트 8080에서 처리된다고 가정합니다.
외부 트래픽에 대한 HTTP.sys 구성하는 단계는 예약된 포트를 사용하도록 사이트를 설정하는 것과 비슷합니다. Windows 7 또는 Windows Vista의 관리자 권한 명령 프롬프트에서 다음 명령을 실행합니다.
netsh http add urlacl url=http://myhostname:8080/ user=everyone
Windows XP의 관리자 권한 명령 프롬프트에서 다음 명령을 실행합니다.
httpcfg set urlacl /u http://myhostname:8080/ /a D:(A;;GX;;;WD)
HTTP.sys 구성한 후 WebMatrix 또는 Visual Studio 2010 SP1 베타를 사용하거나 sites 요소에 다음 바인딩을 포함하도록 applicationhost.config 파일을 편집하여 포트 80을 사용하도록 IIS Express를 구성할 수 있습니다. (myhostname을 컴퓨터의 할 일기본 이름으로 바꾸기).
<binding protocol="http" bindingInformation="*:8080:myhostname"/>
또한 외부 트래픽이 포트 8080을 통과하도록 방화벽을 구성해야 합니다. 단계는 사용 중인 방화벽에 따라 다르며 여기에 설명되지 않습니다.
애플리케이션 테스트를 마쳤으면 이전 설정으로 되돌리기 HTTP.sys.
Windows 7 또는 Windows Vista의 관리자 권한 명령 프롬프트에서 다음 명령을 실행합니다.
netsh http delete urlacl url=http://myhostname:8080/
Windows XP에서 관리자 권한 프롬프트에서 다음 명령을 실행합니다.
httpcfg delete urlacl /u http://myhostname:8080/
사용자 지정 SSL 포트 사용
사이트에 대한 SSL 액세스를 테스트하려면 44300에서 44399 사이의 SSL 포트를 사용하고 IIS Express 자체 서명 인증서를 사용하여 IIS Express에서 이 작업을 수행할 수 있습니다. 이 범위를 벗어난 포트에서 SSL을 사용하려고 하면 IIS Express에서 웹 사이트가 시작될 때 URL 바인딩이 실패합니다.
SSL을 지원하도록 HTTP.sys 구성하는 방법에 대한 일반적인 지침은 방법: SSL 인증서를 사용하여 포트 구성을 참조하세요. 예를 들어 URL https://localhost:443
을 사용하여 웹 사이트를 테스트하려는 경우를 가정해 보겠습니다.
먼저 IIS Express 자체 서명된 인증서의 SHA1 지문을 확인합니다. IIS Express 설치 프로그램이 실행될 때 새 인증서를 생성하기 때문에 이 지문은 컴퓨터마다 다릅니다. 컴퓨터의 개인 인증서 저장소를 확인하여 MMC(Microsoft Management Console) 인증서 스냅인을 사용하여 SHA1 지문을 확인할 수 있습니다. 또는 아래와 같이 .NET CertMgr.exe 유틸리티를 사용할 수 있습니다. 명령 프롬프트에서 다음 명령을 실행합니다.
certmgr.exe /c /s /r localMachine MY
이 명령은 로컬 컴퓨터의 개인 인증서 저장소에 있는 모든 인증서에 대한 정보를 표시합니다. 출력에서 "IIS Express 개발 인증서"를 검색하여 IIS Express 자체 서명된 인증서를 찾은 다음 해당 SHA1 지문을 기록해 둡니다.
다음으로, 자체 서명된 인증서를 URL과 연결하도록 HTTP.sys 구성합니다. Windows 7 또는 Windows Vista에서 먼저 uuidgen.exe 또는 다른 도구를 사용하여 고유한 UUID를 만듭니다. 그런 다음 관리자 권한 프롬프트에서 다음 명령을 실행하여 지문을 certhash 매개 변수에 전달합니다. (지문을 지정할 때 공백을 제외합니다.)
netsh http add sslcert ipport=0.0.0.0:443 certhash=<thumbprint> appid={00112233-4455-6677-8899-AABBCCDDEEFF}
appid 매개 변수의 경우 이전에 만든 고유 UUID를 전달합니다.
Windows XP에서 관리자 권한 프롬프트에서 다음 명령을 실행합니다.
httpcfg set ssl -i 0.0.0.0:443 -h <thumbprint>
443은 예약된 포트이므로 IIS Express가 표준 사용자로 실행되는 동안 사용할 수 있도록 HTTP.sys 구성해야 합니다. 자세한 내용은 예약 포트 사용 섹션을 참조하세요. 예약되지 않은 사용자 지정 SSL 포트(예: 44500)를 사용하는 경우 이 단계를 수행할 필요가 없습니다.
Windows 7 또는 Windows Vista의 관리자 권한 프롬프트에서 다음 명령을 실행합니다.
netsh http add urlacl url=https://localhost:443/ user=everyone
Windows XP에서 관리자 권한 프롬프트에서 다음 명령을 실행합니다.
httpcfg set urlacl /u https://localhost:443/ /a D:(A;;GX;;;WD)
HTTP.sys 구성한 후 WebMatrix 또는 Visual Studio 2010 SP1 베타를 사용하거나 applicationhost.config 파일의 사이트 요소에 다음 바인딩을 추가하여 사용자 지정 SSL 포트를 사용하도록 웹 사이트를 구성합니다.
<binding protocol="https" bindingInformation="*:443:localhost"/>
웹 사이트 테스트를 마쳤으면 이전 설정으로 되돌리기 HTTP.sys. Windows 7 또는 Windows Vista의 관리자 권한 프롬프트에서 다음 명령을 실행합니다.
netsh http delete sslcert ipport=0.0.0.0:443
netsh http delete urlacl url=https://localhost:443/
Windows XP에서 관리자 권한 프롬프트에서 다음 명령을 실행합니다.
httpcfg delete ssl –i 0.0.0.0:443
httpcfg delete urlacl /u https://localhost:443/
사용자 지정 SSL 인증서 사용
사용자 지정 SSL 인증서 설정은 사용자 지정 SSL 포트를 사용하는 것과 매우 유사합니다. 이 섹션에 설명된 단계에서는 웹 사이트가 포트 44300 및 IIS Express 자체 서명된 인증서를 사용하여 로컬 SSL 트래픽을 이미 제공하고 있다고 가정합니다.
먼저 컴퓨터에 사용자 지정 SSL 인증서를 설치해야 합니다. MMC 인증서 스냅인 또는 CertMgr.exe 사용합니다. 인증서를 설치할 때 SHA1 지문 값을 기록해 둡니다.
URL https://localhost:44300
은 자체 서명된 인증서를 사용하도록 IIS Express 설치 프로그램에서 미리 구성됩니다. 이 URL을 사용자 지정 인증서에 바인딩하려면 기존 연결을 삭제해야 합니다. 호스트 이름 및 포트 조합이 SSL 인증서와 연결되지 않은 경우 이 단계를 건너뜁니다.
Windows 7 또는 Windows Vista의 관리자 권한 프롬프트에서 다음 명령을 실행합니다.
netsh http delete sslcert ipport=0.0.0.0:44300
Windows XP에서 관리자 권한 프롬프트에서 다음 명령을 실행합니다.
httpcfg delete ssl –i 0.0.0.0:44300
다시 기본 단계는 사용자 지정 SSL 포트를 구성하기 위한 단계와 유사합니다. uuidgen.exe 또는 다른 도구를 사용하여 고유한 UUID를 만듭니다.
Windows 7 또는 Windows Vista에서 관리자 권한 프롬프트에서 다음 명령을 실행하여 사용자 지정 인증서의 지문(먼저 공백 제거)을 certhash 매개 변수에 전달하고 UUID를 전달합니다.
netsh http add sslcert ipport=0.0.0.0:44300 certhash=<thumbprint> appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Windows XP에서 관리자 권한 프롬프트에서 다음 명령을 실행합니다.
httpcfg set ssl -i 0.0.0.0:44300 -h <thumbprint>
요약
이 문서에서는 기본적으로 사용하도록 설정되지 않은 IIS Express의 일부 시나리오를 지원하는 데 필요한 단계를 설명합니다. 이를 수행하려면 관리자여야 합니다. 관리 권한이 없더라도 IIS Express를 표준 사용자로 사용하여 가장 일반적인 웹 디자인 및 개발 작업을 수행할 수 있습니다.