[Przepraszam, jeśli to pytanie jest trochę długie, istnieje wiele dodatkowych informacji na wypadek, gdyby było ono ponownie]
Przegląd
Mam problem z protokołem SSL w farmie z równoważeniem obciążenia 4 maszyn wirtualnych na platformie Azure. Jeśli żądanie HTTPS trafi do pierwszego serwera w farmie, wszystko jest w porządku. Jeśli dojdzie do którejkolwiek z pozostałych 3, połączenie nie powiedzie się. Chrome wyświetli błąd protokołu SSL, IE i Firefox po prostu stwierdzą, że strony nie można wyświetlić.
Ustawić
Mam cztery maszyny wirtualne z systemem Windows Server 2012 na platformie Azure (małe wystąpienie jako tylko testowanie). Maszyny wirtualne są w tej samej usłudze w chmurze i zestawie dostępności. Punkty końcowe zrównoważone obciążeniem zostały dodane dla portów 80 i 443 (bezpośredni powrót serwera NIE jest na nich włączony). Wszystkie cztery maszyny zostały skonfigurowane za pomocą tego samego skryptu PowerShell, z dwoma wyjątkami skonfigurowanymi w ten sposób.
Konfiguracja IIS każdego serwera jest skonfigurowana do używania konfiguracji udziału, która jest replikowana przez DFS do każdego serwera z pierwszego serwera w grupie. Zostało to ręcznie skonfigurowane dla każdego serwera i działa dobrze.
DFS służy również do replikacji folderu webs z pierwszego serwera na inne.
Odkryłem także „nową” funkcję scentralizowanych certyfikatów po napisaniu skryptu wdrażania, więc został on ręcznie zainstalowany i skonfigurowany również na czterech serwerach. Korzystam z udziału na oddzielnym serwerze do przechowywania plików certyfikatów.
Żądanie certyfikatu zostało wygenerowane na pierwszym serwerze, a ja skorzystałem z SSL.com, aby uzyskać 90-dniowy darmowy protokół SSL dla adresu subdomain.domain.com
. Dodałem rekord CNAME dla subdomain
DNS, aby domain.com
wskazywał na cloudapp
adres platformy Azure .
Zaimportowałem certyfikat SSL na pierwszy serwer, a następnie wyeksportowałem go ponownie jako subdomain.domain.com.pfx
(z hasłem) i skopiowałem go do udziału plików certyfikatów. Podczas sprawdzania scentralizowanych certyfikatów na wszystkich czterech serwerach, wystawiają certyfikat w porządku bez ikon błędów wskazujących, że hasło w konfiguracji było nieprawidłowe itp.
Na koniec zmieniłem powiązania serwera 1, aby dodać https z nazwą hosta subdomain.domain.com
i zaznaczone opcje Wymagaj wskazania nazwy serwera i Użyj scentralizowanego magazynu certyfikatów . Sprawdzanie innych serwerów pokazuje powiązania propagowane zgodnie z oczekiwaniami.
Problem
Dodałem podstawową stronę, która po prostu wypluwa nazwę serwera, przez który żądanie zostało obsłużone. Jeśli mam powłokę dostępu do kilku okien przeglądarki IE http://subdomain.domain.com
, wydrukują one różne nazwy serwerów, co pokazuje, że konfiguracja usług IIS i pliki sieciowe są wdrażane poprawnie, a funkcja równoważenia obciążenia platformy Azure robi to samo. Co naprawdę uważam za naprawdę fajne.
Jednak spada to, gdy próbuję tego za pośrednictwem HTTPS. Tylko żądania trafiające na pierwszy serwer są udane, reszta z nich ulega awarii i nagrywa z „Ta strona nie może zostać wyświetlona” lub „Błąd protokołu SSL” w zależności od przeglądarki, z którą testuję. Na serwerze 1 strona wyświetla się poprawnie, certyfikat jest widoczny i nie ma błędów certyfikatu.
Jestem pewien, że jest to gdzieś problem z konfiguracją serwerów, ale po prostu nie mogę powiedzieć, co to jest. Większość tego, co gram, jest dla mnie czymś nowym, ponieważ w przeszłości używaliśmy fizycznych nieklastrowych serwerów Windows 2003 z IIS6.
Jeszcze bardziej kłopotliwe jest to, że zamknąłem cztery maszyny wirtualne na noc, a kiedy ponownie uruchomiłem usługę dziś rano, serwer 2 najwyraźniej teraz odpowiada na żądania SSL oprócz serwera 1. Mimo to powiedziałem, wczoraj również całkowicie zamknąłem i nadal działał tylko serwer 1.
Pliki dziennika IIS nie pokazują nieudanych żądań SSL, tylko kilka 200 dla portu 80 i połączenie 200 i 304 dla portu 443 na serwerze 1 i 2.
Zrobiłem należytą staranność przy wyszukiwaniu w Google, ale nic nie rzuca światła. Wręcz przeciwnie, z tego, co mogę powiedzieć, to, co zrobiłem, powinno działać.
Jakakolwiek rada, która pomoże rozwiązać ten problem, zostanie przyjęta z wdzięcznością.