IIS7 : SSL 인증서 및 포트 443을 사용하여 사이트에서 호스트 이름을 설정할 수 없습니다


47

IIS7이 포함 된 Win 2008 SP2 시스템을 고려하십시오. 이 시스템의 유일한 사이트에 인증서 및 호스트 이름을 적용하는 것이 작업입니다. 사이트의 호스트 헤더는abc.123.example.com

첫 번째 단계는 .pfx를 개인 저장소에 설치하는 것이 었으며 성공했습니다.

IIS7은 인증서가 사용 가능한 것으로 확인되지만 호스트 이름 입력은 허용하지 않습니다. 인증서를 선택하기 전에도 호스트 이름 텍스트 상자는 항상 비활성화 / 회색으로 표시됩니다. 기본 포트 80 바인딩도 삭제했습니다.

사이트 바인딩

질문 : 이 사이트의 호스트 이름을 어떻게 설정합니까? 이 인증서가 와일드 카드 인증서의 문제입니까? SSL 요청이 웹 서버에 들어오고 패킷의 호스트 헤더가 암호화되어 있음을 이해합니다. 그러면 IIS6에서 호스트 헤더를 지정할 수 있지만 IIS7은 지정할 수없는 이유는 무엇입니까?

업데이트 : 인증서가 문제의 일부가 아닙니다. 컴퓨터에 새 사이트를 만들었으며 https 바인딩을 선택하면 호스트 이름 텍스트 상자가 비활성화됩니다.

답변:


32

UI에서는 할 수 없으며 명령 줄에서해야합니다. 다음은 그 과정을 잘 살펴 보는 것입니다.

http://www.sslshopper.com/article-ssl-host-headers-in-iis-7.html


33
편리한 트릭, 인증서에 '*'로 시작하는 친숙한 이름을 지정하십시오. IIS는 호스트 헤더 상자를 회색으로 표시하지 않습니다 : blog.armgasys.com/?p=80
russau

1
나는 이것이 오래되었다는 것을 알고 있으며 주석에 불과하지만이 편리한 트릭은 나에게 약간의 좌절감을 안겨주었습니다. 감사합니다!
bpursley

45

GUI에서 작동합니다 ...

설치하려는 인증서의 '친숙한 이름'이 인증서에 대해 만든 다중 도메인 이름과 동일한 지 확인하십시오.

즉. * .companydomain.com

* .companydoman.com 인증서에 'Nice friendly name'을 입력하면 인증서를 IIS에 설치할 때 호스트 이름 헤더 상자가 회색으로 표시됩니다.

* .companyname.com을 친숙한 이름으로 사용하면 황금색입니다.

팔.


14
이 팁 감사합니다! 다른 사람이 IIS에서 인증서의 이름을 바꿀 수없는 경우 (누구나?) 인증서의 MMC 스냅인에서 인증서의 이름을 바꿀 수 있습니다. MMC를로드하고 인증서 스냅인을 추가 한 다음 컴퓨터 계정, 로컬 컴퓨터를 선택하십시오. 인증서 스냅인을로드 한 후에 Certiifcates (로컬 컴퓨터)> 개인> 인증서를 찾아 마우스 오른쪽 단추로 클릭하여 인증서에서 속성을 선택할 수 있습니다. 이름 필드를 * .yoursite.com으로 변경하고 IIS 관리자 스냅인
Garrett

4
friendlyname은 "*"로 시작해야하는 것 같지만 그 이후에 원하는 다른 이름을 포함 할 수 있습니다. 제 경우에는 * .com 이외의 공통 루트가 없었고 친숙한 이름이 이상하게 보였을 때 여러 다른 도메인에 유효한 인증서가있었습니다. 그래서 나는 그것을 대신 * -my-descriptive-name-here라고 부릅니다. 그리고 이름 변경 팁에 대한 @Garrett에게 감사드립니다!
wojtow

이것이 실제 답변입니다. 니스
조 필립스

@Garrett '내 도메인 SSL'과 같은 친숙한 이름을 사용한 경우 호스트 이름 필드가 비어 있어도 여전히 작동합니다. 호스트 이름을 잃어 버렸을 때 정말 놀랐지 만 4 개의 와일드 카드 하위 도메인이 재발급 된 SSL에서 제대로 작동하는 것 같습니다. '* .mydomain.com'을 친숙한 이름으로 사용하면 호스트 이름 만 볼 수 있지만 두 가지 옵션 모두 작동합니다. 그렇지 않은 경우 IIS는 정식 도메인 이름이 아닌 친숙한 이름을 사용하도록 명시 적으로 지시해야합니까?
Charles Robertson

10

짧은 대답은 각 IP에 하나의 인증서 만 바인딩 할 수 있다는 것입니다. 따라서 해당 IP 주소로 어떤 호스트 이름이 지정 되더라도 인증서 바인딩이 적용됩니다. 호스트 이름을 지정할 수 있다는 것은 동일한 IP 주소와 포트에 여러 개의 호스트 이름과 인증서 조합이있을 수 있음을 의미하지만 (비 SSL 항목에서와 같이), 그렇지 않습니다. 따라서 필드를 사용할 수 없습니다.

보다 완전한 설명은 SSL이 트래픽을 암호화하고 해당 트래픽의 일부는 브라우저가 서버로 보낸 HTTP 헤더입니다. 이러한 헤더 중 하나는 IIS가 요청과 함께로드 할 사이트를 결정하는 데 사용하는 "호스트"헤더입니다. 요청 헤더가 전송되기 전에 보안 연결을 설정하려면 인증서를로드해야하므로 IIS는 IP 주소와 포트 번호 만 기반으로 인증서를 선택해야합니다. 어떤 사이트를로드해야하는지 입력 할 수 없습니다.

여기에 설명 기사입니다 SSL 연결의 내부 동작 미세한 세부 사항은.


이 답변에 감사드립니다. 저스틴 목록에서 IP 주소 중 하나를 선택할 때에도 IIS7에서 호스트 헤더를 지정할 수없는 이유는 여전히 확실하지 않습니다. IIS6은 아무런 문제없이 작동합니다. 언급했듯이, 이것은 머신에서 유일하고 유일한 사이트입니다.
p.campbell 2009

2
호스트 헤더는 와일드 카드 인증서 또는 다중 도메인 "UC"인증서 ( sslshopper.com/unified-communications-uc-ssl-certificates.html) 와 함께 작동 할 수 있습니다 . 이 경우 서버에는 여러 개의 호스트 이름이 있더라도 1 개의 인증서 만 있습니다.
russau

매우 명확한 설명. +1
Dan Solovay

7

SSLShopper 응답은 호스트 헤더없이 바인딩을 남겨두고 인증서에 대한 연결을 끊지 않고 해당 바인딩을 제거 할 수 없기 때문에 작동하지 않았습니다. 작동시키는 데 사용한 방법은 다음과 같습니다.

이 답변은 인증서가 이미 생성되어 인증서 저장소에 추가되었고 IIS에 추가되었다고 가정합니다. 또한 SSL 이외의 다른 웹 사이트 바인딩을 원하지 않는다고 가정합니다.

먼저 정보를 수집해야합니다. 해시, 응용 프로그램 ID 및 호스트 이름이 필요합니다.

단계

  1. IIS를 열고 서버를 선택한 다음 하단 섹션에서 "서버 인증서"를 두 번 클릭하십시오. "발급 대상"주소를 적어 둡니다. 이것이 우리의 호스트 이름입니다. 이것을 저장하십시오.
  2. 귀하의 사이트를 선택하십시오
  3. http 프로토콜을 사용하여 사이트를 포트 80에 바인딩
  4. 다른 모든 바인딩 제거
  5. https 프로토콜을 사용하여 사이트를 포트 443에 바인딩
  6. 명령 프롬프트를 엽니 다

    netsh http show sslcert
    
  7. 인증서 해시 및 응용 프로그램 ID 저장

  8. 사이트에서 https 바인딩을 제거하십시오.
  9. 명령 프롬프트에서 :

    netsh http add sslcert ipport=0.0.0.0:443 certstorename=my certhash=<put Certificate Hash here> appid={<put Application ID here>}
    
    appcmd set site /site.name:"<put site name here>" /+bindings.[protocol='https',bindingInformation='*:443:<put host name here>']
    

참고 : Appcmd.exe는 c : \ windows \ system32 \ insetsrv에 있습니다. 이 명령이 작동하려면 해당 폴더에 있어야합니다.

  1. 사이트에서 http 바인딩을 제거하십시오.

감사! 이를 통해 마침내 내 사이트가 HTTPS로 작동하는 데 도움이되었습니다. 명령 중 하나에서 오타를 수정했지만 최소 길이 요구 사항을 초과하려면 단계 제목을 추가해야했습니다. 자유롭게 제거하십시오-원래의 대답은 따르기 쉽습니다. 건배!
potatopeelings

이것은 여러 사이트가 있었기 때문에 약간의 변형으로 6 개의 SAN (와일드 카드 인증서가 아님)이있는 인증서로 저에게 효과적이었습니다. 1-7 단계를 한 번 수행해야했습니다. 각 사이트에서 8 단계를 수행해야했습니다. 9 단계의 첫 번째 명령은 한 번 수행하고 9 단계의 두 번째 명령은 사이트 당 한 번 수행해야했습니다.
Steve Kaye

4

여기에 허용 된 답변은 혼란스럽고 질문에 맞지 않다고 생각합니다. 허용되는 답변이 아니어야합니다.

문제

와 같은 와일드 카드 SSL이 *.ipsum.com있고 인증서가 설치되어 있지만 텍스트 상자가 회색으로 표시되어 HTTPS 바인딩을 추가하려고하면 IIS에서 사이트의 호스트 이름을 선택할 수 없습니다.

해결책

와일드 카드 SSL은 모든 하위 도메인과 함께 사용할 수 있습니다 . 인증서의 이름을로 시작 해야 합니다 *. 예를 들어 와일드 카드 도메인과 같은 이름을 사용하는 것을 선호 *.ipsum.com하지만 별표를 사용하는 모든 것을 호출 할 수 있습니다.*foo

인증서에 잘못된 이름을 알려주었습니다. 도와주세요!

Windows 8 또는 Server 2012 certlm.msc부터 시작 메뉴에 입력 하여 로컬 컴퓨터의 인증서를 관리 할 수 ​​있습니다. 이전 버전의 창에서는 약간 더 복잡한 작업을 수행해야합니다.

  1. mmc.exe처음부터 실행
  2. File메뉴로 이동하여 선택 Add/Remove Snap-in...하거나 누르십시오(Ctrl-M)
  3. (가) 강조 Certificates에 스냅인 히트 Add >한 후 선택합니다 Computer Account다음에 Local Computer다음 히트 후속 대화 상자에서 Finish다음 OK스냅인 창을 닫습니다

주 창에서 확장 Certificates (Local Computer)한 후 Personal다음 Certificates인증서를 마우스 오른쪽 단추로 클릭에 당신은 수있을 것 명중 Properties당신이 쉬운 이름을 업데이트 할 수있는 곳.

IIS 관리자를 닫고 연 다음 호스트 이름을 설정할 수 있습니다.


1
트릭을했다!
Kreker

1
@ 자크 어썸. 대박. 대박. 호스트 이름 필드가 비어 있으면 실제로 중요하지 않다고 생각하지만 더 안심할 수 있습니다. 인증서를 다시 발급했음을 명심하십시오. 그래서 내 호스트 이름은 비워지기 전에 이미 호스트 이름 필드에있었습니다. 내 와일드 카드 SSL이 이름이나. * mydomain.com 유형 이름으로 작동하는 것 같습니다. 호스트 이름 필드가 비워지면 IIS가 호스트 이름의 내부 레코드를 유지한다고 생각합니다. 사람들이 놀랄 경우를 대비하여 이것을 언급해야한다고 생각했습니다!
Charles Robertson

1
@ 자크 이 솔루션은 Windows 2008R2와 같은 공룡 서버에서 작동합니다.
Charles Robertson

@CharlesRobertson이 도움이 된 것을 매우 기쁘게 생각하며 추가 정보를 추가해 주셔서 감사합니다!
Zac

2

실제로 GUI를 통해 호스트 헤더를 추가 할 수는 있지만 인증서 이름이 어떻게 지정되는지에 달려 있습니다 ... 내 이름이 와일드 카드 인증서에 * .xyz.com이라는 친숙한 이름을 지정하고 해당 인증서를 선택한 경우 GUI를 사용할 수 있습니다. 친숙한 이름이 xyzwildcard와 같고 선택하면 호스트 헤더 필드가 회색으로 표시됩니다.

이상한 이상한


1

프로토콜이 https로 변경되거나 SSL 인증서를 추가 한 후 일부 시스템에서는 호스트 이름을 편집 할 수 없습니다. IIS는 때때로 심술 can을 수 있습니다.

이 Windows 명령은 "443"포트, "subdomain.domain.com"호스트 이름, "site name"사이트 이름에 "https"프로토콜을 사용하여 새 바인딩을 만듭니다. 요구 사항에 맞게 값을 따옴표로 변경하십시오. 그런 다음 포트 443을 사용하는 경우 이전 바인딩을 삭제해야합니다.

Run Windows Command Prompt as Administrator

C :>cd C:\Windows\System32\inetsrv

C : \ Windows \ System32 \ inetsrv>appcmd set site /site.name:"site_name" /+bindings.[protocol='https',bindingInformation='*:443:subdomain.domain.com']


0

선택한 인증서의 이름이 호스트 이름 * .xyz.com과 같을 때만 호스트 이름을 추가 할 수 있으며 mmc (Snap-in)에서 인증서 이름을 * .xyz.com으로 바꿀 수 있습니다.


-1

이 KB 기사 가이 문제에 대해 밝힐 것이라고 생각 합니다 . 간단히 말해서 SSL을 사용할 때 HTTP 1.1 호스트 헤더가 지원되지 않습니다.

아마도 원하는 것을 성취 할 수있는 것은 SecureBindings 메타베이스 키를 사용하는 것입니다. 예 : cscript.exe adsutil.vbs 세트 / w3svc / websiteID / SecureBindings "ip.ip.ip.ip : 443 : abc.123.mysite.com


IIS 7에는 적용되지 않습니다.
davidcl

그것은 우리가 그것을했을 때 효과가 있었기 때문에 이상합니다 ...
Jim B

-1

라이센스 파일 (licx)을 사용하는 ASP.NET 응용 프로그램이있는 경우 도메인 이름 대신 IP 주소로 표시되므로 사이트가 작동하지 않기 때문에 MS가 GUI에서이 기능을 사용하지 않는 이유는 무엇입니까? . 새로운 소프트웨어가 출시 될 때마다 가정을 중지해야합니다. IT 직원은 Microsoft에 의해 베이비 시팅 할 필요가 없습니다! 이런!


-2
  1. * .testcompany.com으로 자체 서명 된 인증서를 작성했으며 바인딩 SSL 인증서 편집 드롭 다운에서 새로 작성된 (*로 시작)을 선택했으며 호스트 이름 텍스트 상자를 사용하도록 설정하고 호스트 이름을 'webapi.b2c'로 작성했습니다. .com ',

  2. C : \ Windows \ System32 \ drivers \ etc 127.0.0.1 webapi.b2c.com에서 호스트 파일을 업데이트했습니다.

이제 ' https://webapp.b2c.com/ '으로 사이트를 탐색 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.