2013-04-29 14 views
6

Mam wiele witryn uruchomionych na moim IIS, teraz dla jednej ze stron (SiteB) musimy obsługiwać żądania ssl. Włączyłem edycję wiązań dla strony internetowej, ale problem polega na tym, że po wybraniu powiązań edycji protokołu SSL SSL pole HostName jest wyłączone, ponieważ nie można ustawić nazwy hosta, aby odpowiadać na żądanie https, powoduje to, że wszystkie witryny mojego IIS, jeśli są wymagane przez https : // ładuje stronę z witrynąB.IIS 7 dodawanie SSL do jednej witryny, wszystkie inne strony odpowiadają na żądanie https

Na przykład moi bidings są obok

Site A 

IP Port HostName 
*  80 www.sitea.com 

Site B 
IP Port Hostname 
* 443 www.siteb.com 
* 80 www.siteb.com 

https://www.siteb.com Gdybym wpisać w przeglądarce działa poprawnie, ale jeśli wpisać https://www.sitea.com w przeglądarce, siteb strona jest ładowany z nazwą Sitea.

W jaki sposób mogę uczynić to tylko https://www.siteb.com odpowiedzi na żądania https w moim IIS?

Próbowałem również z appcmd polecenia, ale to nie działa.

appcmd set site /site.name:{sitB} /bindings.[protocol='https',bindingInformation='*:443:*'].bindingInformation:*:443:siteB.com 

Dzięki za pomoc.

+0

Mam ten sam problem. Zacznę nagrodę. – Germstorm

+0

Czy zbudowałeś certyfikat? Co to jest CN? –

+0

Czy wszystkie inne witryny są hostowane jako "Katalog wirtualny" lub "Aplikacja" lub "Witryna internetowa"? Wygląda na to, że zastosowałeś ustawienia do strony internetowej i wiele katalogów wirtualnych/aplikacji jest hostowanych na stronie. –

Odpowiedz

9

Root Problem
To nieoczekiwane zachowanie nie jest z powodu IIS tak dużo, jak to dlatego, że z protokołów szyfrowania internetowej.

Dwa główne protokoły szyfrowania w Internecie to SSL i TLS. Oba te protokoły negocjują bezpieczne połączenie przed przekazaniem jakichkolwiek informacji o żądaniu do serwera. Oznacza to, że na bezpiecznych żądaniach serwery w rzeczywistości nie uczą się nazwy hosta, dopóki nie zostanie nawiązane bezpieczne połączenie.

Zostało stworzone rozszerzenie TLS i SSL, aby rozwiązać ten problem. Nazywa się SNI (identyfikacja nazwy serwera). Problem polega na tym, że to rozszerzenie musi być obsługiwane zarówno na serwerze, jak i na klientach. Obecnie obsługa przeglądarki klienta jest nieco niesprawna. Zobacz artykuł o numerze przeglądarki: SNI.

obchodzenia IIS problemu
To właśnie z powodu powyższego ograniczenia hostname że IIS nie pozwala powiązać hostów do HTTPS wiązań. Usługi IIS nie mogą przekierowywać żądań HTTPS do konkretnej nazwy hosta, ponieważ nie zna ona żądanej nazwy hosta, gdy zaczyna negocjować połączenie.

Gdy usługi IIS wynegocjowały bezpieczne połączenie z klientem i dowiadują się, że żądana nazwa hosta jest dla witryny innej niż ta z powiązaniem HTTPS (np. Żądanie dla https://sitea.com), usługi IIS mogą zwrócić kod błędu lub spróbować go wdzięcznie. IIS wybiera to drugie i próbuje zawodzić z wdziękiem, wyświetlając stronę z powiązaniem HTTPS, mimo że użytkownik żąda innej witryny.

Solutions/Obejścia

  • Utwórz regułę przepisywania aby przekierować wszystkie żądania HTTPS dla niezabezpieczonych stronach http.
  • Uaktualnij do IIS 8, aby użyć rozszerzenia SNI. Następnie poproś użytkowników o uaktualnienie do przeglądarek obsługujących SNI.
  • Twoja bezpieczna witryna zwraca komunikat o błędzie, gdy otrzyma żądanie innej domeny.
  • Bind na podstawie adresu IP zamiast nazwy hosta od IIS może żądań HTTPS trasa przez adres IP

Referencje
Większość moich informacji pochodziła z Wikipedia article on SNI

+0

Eksperymentując z IIS 8, wygląda na to, że poradzisz sobie z tym przypadkiem bez SNI. SNI jest wymagany tylko do wybrania certyfikatu odpowiadającego żądanej domenie. Wydaje się, że IIS 8 może później wybrać stronę internetową. Testowane przez określenie domeny domaina na powiązanie https, nie ma żadnego innego powiązania https na serwerze, dostępnego poprzez xp IE8 (bez SNI w takim przypadku): https na stroniea => sukces, https na innych domenach obsługiwanych przez server => niezgodność certyfikatu, a następnie IIS 404 dla braku pasującego wiązania. Nie można tego zrobić z IIS7, co nie pozwala ograniczyć wiązania HTTPS do domeny. –

2

prowadzimy serwerów internetowych z wielu witryn wymagających SSL bez problemu.

Jeśli dobrze rozumiem Twój problem - musisz ustawić powiązanie zamiast nazwy hosta - co nie będzie działać. Tak więc dla każdej hostowanej przez nas witryny obsługującej SSL wymagamy odrębnego zewnętrznego adresu IP. Następnie wprowadź ten adres IP jako powiązanie podczas konfigurowania witryny w IIS.

Powiązane problemy