IIS7: nie można ustawić nazwy hosta na stronie z certyfikatem SSL i portem 443


47

Rozważ maszynę Windows 2008 SP2 z IIS7. Zadanie polega na zastosowaniu certyfikatu i nazwy hosta do jedynej witryny na tym komputerze. Nagłówki hosta witryny muszą byćabc.123.example.com

Pierwszym krokiem było zainstalowanie .pfx w sklepie osobistym, co zakończyło się powodzeniem.

IIS7 znajduje certyfikat jako dostępny, ale nie pozwala na wprowadzenie nazwy hosta. Pole tekstowe nazwy hosta jest ZAWSZE wyłączone / wyszarzone, nawet przed wybraniem mojego certyfikatu. Usunąłem nawet domyślne wiązanie portu 80.

Wiązania witryny

Pytanie: jak ustawić nazwę hosta dla tej witryny? Czy to kwestia tego, że ten certyfikat jest certyfikatem wieloznacznym? Rozumiem, że żądanie SSL przychodzi do serwera WWW, a nagłówek hosta w pakiecie jest szyfrowany. Dlaczego zatem IIS6 umożliwia określenie nagłówka hosta, a IIS7 nie?

Aktualizacja: certyfikat nie jest częścią problemu. Utworzyłem nową witrynę na komputerze, a po wybraniu wiązania https pole tekstowe nazwy hosta jest wyłączone.

Odpowiedzi:



45

Działa w GUI ...

Upewnij się tylko, że „przyjazna nazwa” instalowanego certyfikatu jest taka sama, jak nazwa wielu domen podana dla certyfikatu.

to znaczy. * .firma.com

jeśli wpiszesz „Ładną przyjazną nazwę” dla * .companydoman.com cert, podczas instalowania certyfikatu w IIS wyszarzy pole nagłówka nazwy hosta.

Jeśli użyjesz * .firma.com jako przyjaznej nazwy, jesteś złoty.

Bum.


14
Dziękuję za tę wskazówkę! Jeśli ktoś inny nie może zmienić nazwy certyfikatu z IIS (czy ktoś?), Możesz zmienić nazwę certyfikatu w przystawce MMC dla Certyfikatów. Wystarczy załadować MMC, dodać przystawkę Certyfikaty, wybrać Konto komputera, Komputer lokalny. Po załadowaniu przystawki Certyfikaty możesz przejść do Certiifcates (komputer lokalny)> Osobiste> Certyfikaty i kliknąć prawym przyciskiem myszy, aby wybrać Właściwości na certyfikacie. Zmień pole Przyjazna nazwa na * .yoursite.com i ponownie załaduj przystawkę menedżera IIS
Garrett

4
Przyjazna nazwa musi zaczynać się od „*”, ale może zawierać dowolną inną nazwę, którą chcesz później. W moim przypadku miałem certyfikat ważny dla kilku różnych domen, które nie miały wspólnego katalogu głównego innego niż * .com i nadawanie tego jako przyjaznej nazwy wydawało się dziwne. Więc zamiast tego nazwałem to * -my-descriptive-name-tutaj. I dzięki @Garrett za wskazówkę dotyczącą zmiany nazwy!
wojtow

To jest prawdziwa odpowiedź. Miło
Joe Phillips,

@Garrett Czy to oznacza, że ​​jeśli użyłem przyjaznej nazwy, takiej jak „My Domain SSL”, wszystko nadal będzie działać, nawet jeśli pole nazwy hosta jest puste. Naprawdę mnie przeraziło, kiedy straciłem nazwy hostów, ale moje 4 subdomeny z symbolami zastępczymi wydają się działać dobrze z ponownie wydanym SSL? Oczywiście użycie „* .mydomain.com” jako przyjaznej nazwy pozwala tylko zobaczyć nazwę hosta, ale pod maską obie opcje powinny działać. W przeciwnym razie usługi IIS powinny wyraźnie informować nas o używaniu kwalifikowanej nazwy domeny, a nie przyjaznej nazwy?
Charles Robertson,

10

Krótka odpowiedź jest taka, że ​​do każdego adresu IP może być przypisany tylko jeden certyfikat, więc powiązanie certyfikatu będzie obowiązywać bez względu na nazwę hosta skierowaną na ten adres IP. Określenie nazwy hosta oznaczałoby, że możesz mieć wiele kombinacji nazwy hosta i certyfikatu na tym samym adresie IP i porcie (jak to możliwe w przypadku wpisów innych niż SSL), ale tak nie jest, więc pole jest niedostępne.

Bardziej kompletnym wyjaśnieniem jest to, że SSL szyfruje ruch, a częścią tego ruchu są nagłówki HTTP wysyłane przez przeglądarkę na serwer. Jednym z tych nagłówków byłby nagłówek „Host”, którego IIS używa do określenia, która witryna ma zostać załadowana żądaniem. Ponieważ certyfikat musi zostać załadowany, aby ustanowić bezpieczne połączenie PRZED wysłaniem nagłówków żądania, IIS musi wybrać certyfikat tylko na podstawie adresu IP i numeru portu, pozostawiając nagłówek „Host” na zimno jako czynnik determinujący która strona ma zostać załadowana, aby nie pozwoliły Ci wejść.

Oto artykuł, w którym szczegółowo opisano wewnętrzne funkcjonowanie połączenia SSL .


Dzięki za odpowiedź, Justin. Nadal nie jestem pewien, dlaczego IIS7 nie pozwala mi określić nagłówka hosta, nawet jeśli wybiorę jeden z adresów IP z listy. IIS6 działa bez żadnych problemów. Jak wspomniano, jest to jedyna strona na komputerze.
p.campbell

2
Nagłówki hosta mogą współpracować z certyfikatem wieloznacznym lub certyfikatem „UC” dla wielu domen: sslshopper.com/unified-communications-uc-ssl-certificates.html . W takim przypadku serwer ma tylko 1 certyfikat do obsługi, nawet jeśli istnieje wiele nazw hostów.
Russau

Bardzo jasne wytłumaczenie. +1
Dan Solovay

7

Odpowiedź SSLShopper nie działała dla mnie, ponieważ opuściła powiązanie bez nagłówka hosta i nie można go usunąć bez zerwania połączenia z certyfikatem. Oto metoda, której użyłem, aby ją uruchomić:

Uwaga: ta odpowiedź zakłada, że ​​certyfikat został już wygenerowany, dodany do magazynu certyfikatów i dodany do IIS. Zakłada również, że nie chcesz żadnych innych powiązań z witryną oprócz SSL.

Najpierw musimy zebrać trochę informacji. Potrzebujemy skrótu, identyfikatora aplikacji i nazwy hosta.

Kroki

  1. Otwórz IIS, wybierz serwer i kliknij dwukrotnie „Certyfikaty serwera” w dolnej części. Zanotuj adres „Wystawiono dla”. To jest nazwa naszego hosta. Zachowaj to.
  2. Wybierz swoją stronę
  3. Powiąż witrynę z portem 80, używając protokołu http
  4. Usuń wszystkie inne wiązania
  5. Powiąż witrynę z portem 443, używając protokołu https
  6. Otwórz wiersz polecenia

    netsh http show sslcert
    
  7. Zapisz skrót certyfikatu i identyfikator aplikacji

  8. Usuń powiązanie https z witryny
  9. W wierszu polecenia:

    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>']
    

Uwaga: Appcmd.exe można znaleźć w folderze c: \ windows \ system32 \ insetsrv. Być może trzeba będzie znajdować się w tym folderze, aby to polecenie działało.

  1. Usuń powiązanie http ze swojej witryny

Dzięki! To pomogło mi w końcu uruchomić moją witrynę w HTTPS. Poprawiłem literówkę w jednym z poleceń, ale musiałem dodać nagłówek Kroki, aby przekroczyć wymagania dotyczące minimalnej długości. Nie krępuj się - usuń oryginalną odpowiedź. Twoje zdrowie!
Potatopeelings,

Działa to dla mnie z certyfikatem z 6 sieciami SAN (nie z certyfikatem wieloznacznym) z niewielkimi zmianami, ponieważ miałem wiele witryn. Raz musiałem wykonać kroki od 1 do 7. Krok 8 musiał zostać wykonany na każdej stronie. Pierwsze polecenie z kroku 9 musiało być wykonane raz, a drugie polecenie z kroku 9 musiało być wykonane raz na stronę.
Steve Kaye

4

Przyjęta tutaj odpowiedź jest myląca i nie sądzę, aby była poprawna w przypadku pytania. To nie powinna być zaakceptowana odpowiedź.

Problem

Masz wieloznaczny protokół SSL, taki jak *.ipsum.comi certyfikat jest zainstalowany, ale nie możesz wybrać nazwy hosta dla witryny w IIS, gdy próbujesz dodać powiązanie HTTPS, ponieważ pole tekstowe jest wyszarzone.

Rozwiązanie

Z wieloznacznego protokołu SSL można korzystać z dowolnej subdomeny, wystarczy upewnić się, że uruchomiono przyjazną nazwę certyfikatu *. Wolę używać tej samej przyjaznej nazwy co domena wieloznaczna, np. *.ipsum.comMożesz nazwać to dowolną istotą z gwiazdką:*foo

Podałem mojemu certyfikatowi niewłaściwe przyjazne imię, pomoc!

Od Windows 8 lub Server 2012 możesz pisać certlm.mscw menu Start, aby zarządzać certyfikatami dla komputera lokalnego. W poprzednich wersjach systemu Windows musisz zrobić coś nieco bardziej skomplikowanego:

  1. Uruchom mmc.exeod początku
  2. Przejdź do Filemenu i wybierz Add/Remove Snap-in...lub naciśnij(Ctrl-M)
  3. Podświetl Certificatesprzystawkę i naciśnij, Add >a następnie wybierz Computer Accountkolejno, a następnie Local Computerw kolejnych oknach dialogowych, a następnie naciśnij, Finisha następnie OKzamknij okno przystawek

W głównym oknie rozwiń, Certificates (Local Computer)a Personalnastępnie Certificatesbędziesz mógł kliknąć certyfikat prawym przyciskiem myszy, kliknąć miejsce, w Propertiesktórym możesz zaktualizować przyjazną nazwę.

Zamknij i otwórz Menedżera usług IIS, a następnie możesz ustawić nazwę hosta.


1
Udało się!
Kreker

1
@Zac Awesome. Niesamowite. Niesamowite. Chociaż nie sądzę, żeby miało to znaczenie, jeśli pole nazwy hosta jest puste, dało mi to więcej spokoju. Pamiętaj, że ponownie wystawiałem certyfikat. Więc moja nazwa hosta była już w polu nazwy hosta, zanim stała się pusta. Mój wieloznaczny protokół SSL wydaje się działać z przyjazną nazwą lub nazwą typu * mojadomena.com. Myślę, że IIS prowadzi wewnętrzny rejestr nazwy hosta, gdy pole nazwy hosta zniknie. Pomyślałem, że powinienem o tym wspomnieć, na wypadek, gdyby ludzie wariowali!
Charles Robertson

1
@Zac Oh. To rozwiązanie działa na serwerach dinozaurów, takich jak Windows 2008R2 ...
Charles Robertson,

@CharlesRobertson bardzo się cieszę, że to pomogło i dziękuję za dodanie tych dodatkowych informacji!
Zac

2

Właściwie możesz dodać nagłówek hosta za pomocą GUI, ale to zależy od nazwy certyfikatu ... jeśli podam przyjazną nazwę * .xyz.com mojemu symbolowi wieloznacznemu i wybiorę ten certyfikat, to jestem w stanie korzystać z GUI. jeśli przyjazna nazwa to coś w stylu xyzwildcard, a ja to wybieram, oznacza to, że wyświetla się w polu nagłówka hosta ...

Dziwne ... dziwne


1

Niektóre komputery nie pozwalają na edycję nazwy hosta, jeśli protokół zostanie zmieniony na https lub po dodaniu certyfikatu SSL. Usługi IIS mogą być czasem zrzędliwe.

To polecenie systemu Windows utworzy nowe powiązanie z protokołem „https” na porcie „443”, nazwie hosta „subdomain.domain.com”, nazwie witryny „name site”. Zmień te wartości (w cudzysłowach), aby spełnić Twoje wymagania. Będziesz wtedy musiał usunąć stare powiązanie, jeśli używa ono portu 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

Nazwę hosta można dodać tylko wtedy, gdy nazwa smażona wybranego certyfikatu będzie podobna do nazwy hosta * .xyz.com, a nazwę przyjazną dla certyfikatu można zmienić na * .xyz.com z mmc (Snap-in).


-1

Myślę, że ten artykuł KB rzuci nieco światła na ten problem. Krótko mówiąc, nagłówki hosta HTTP 1.1 nie są obsługiwane podczas korzystania z protokołu SSL.

Prawdopodobnie uda Ci się użyć klucza metabazy SecureBindings. Np. Cscript.exe adsutil.vbs set / w3svc / websiteID / SecureBindings "ip.ip.ip.ip: 443: abc.123.mysite.com


Nie dotyczy IIS 7.
David

to dziwne, ponieważ zadziałało, kiedy to zrobiliśmy ...
Jim B

-1

Dlaczego MS wyjmuje to z GUI jest poza mną, ponieważ jeśli masz aplikację ASP.NET, która korzysta z plików licencji (licx), twoja strona nie będzie działać, ponieważ wyświetla się jako adres IP zamiast nazwy domeny . Muszą ZATRZYMAĆ WNIOSEK w każdej nowej wersji swojego oprogramowania - ludzie IT nie muszą być opieką nad dziećmi przez Microsoft! Rany!


-2
  1. Utworzyłem samopodpisany certyfikat za pomocą * .testcompany.com, wybrałem nowo utworzony (zaczynając od *) w rozwijanym menu Edycja wiążącego certyfikatu SSL, mam włączone pole tekstowe nazwy hosta, utworzyłem nazwę hosta jako 'webapi.b2c .com ”,

  2. Zaktualizowałem plik hosts w C: \ Windows \ System32 \ drivers \ etc 127.0.0.1 webapi.b2c.com

Teraz mogę przeglądać witrynę jako „ https://webapp.b2c.com/

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.