Mamy już witrynę internetową z protokołem HTTP na porcie 80 i HTTPS na porcie 443. Dodaje teraz do niej drugą witrynę, iz tego, co rozumiem, nie mogę hostować dwóch witryn na tym samym porcie SSL.
Więc moje pytanie brzmi: który zakres numerów portów jest dla mnie odpowiedni jako mój port SSL w drugiej witrynie?
Komentarze
- Mogę się mylić, ale uważam, że ważny certyfikat SSL musi znajdować się na porcie 443 i uważam, że właśnie dlatego hosting współdzielony zapewnia dedykowany Adres IP przy zakupie SSL. Ale … to nie jest moja dziedzina, mam nadzieję, że jakaś inna maniakalna osoba może to potwierdzić.
Odpowiedź
Właściwie MOŻESZ hostować wiele witryn SSL na porcie 443. Poniższy kod w pliku konfiguracyjnym Apache załatwi sprawę.
W przeciwnym razie możesz użyć dowolnych portów. Wada oznacza, że użytkownicy będą musieli podać numer portu w adresie URL (np. https://yourdomain.com:445/ )
## SSL (HTTPS) PORT 443 Listen 443 NameVirtualHost *:443 LoadModule ssl_module modules/mod_ssl.so SSLPassPhraseDialog builtin SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000) SSLSessionCacheTimeout 300 SSLMutex default SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin SSLCryptoDevice builtin <VirtualHost *:443> ServerName host1.com SSLEngine on SSLOptions +StrictRequire SSLProtocol -all +TLSv1 +SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM SSLCertificateFile /etc/httpd/ssl/host1.crt SSLCertificateKeyFile /etc/httpd/ssl/host1.key SSLVerifyClient none SSLProxyEngine off SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" DocumentRoot /var/www/host1/ <Directory "/var/www/host1/"> Options Indexes FollowSymLinks AllowOverride All Order Allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:443> ServerName host2.com SSLEngine on SSLOptions +StrictRequire SSLProtocol -all +TLSv1 +SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM SSLCertificateFile /etc/httpd/ssl/host2.crt SSLCertificateKeyFile /etc/httpd/ssl/host2.key SSLVerifyClient none SSLProxyEngine off SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" DocumentRoot /var/www/host2/ <Directory "/var/www/host2/"> Options Indexes FollowSymLinks AllowOverride All Order Allow,deny Allow from all </Directory> </VirtualHost>
Komentarze
- Dziękuję, ale to jest witryna IIS. Masz jakąś wskazówkę, jak mógłbym zrobić to samo?
Odpowiedź
Kiedy mówisz „druga witryna” – masz na myśli drugą nazwę domeny? Tak jak w przypadku, „obecnie hostujesz https://www.mycompany.com w jednym klastrze i chcesz hostować https://www.yourcompany.com w tym samym klastrze? Myślę, że szukasz„ wirtualnego hostingu ”: http://support.microsoft.com/kb/q190008
Nadal będziesz musiał kupić drugi certyfikat SSL, ale będziesz mieć możliwość hostowania obu jednocześnie Adres IP pod standardowymi portami (co przynajmniej zwiększy zaufanie użytkowników do Twojej witryny).
Komentarze
- Użyłem hosta nazwy nagłówków, a dwie witryny mają postać pierwsza.mojafirma.com i druga.mojafirma.com. Problem polega na tym, że w ” Zaawansowanej identyfikacji witryn internetowych ” są trzy kolumny dla HTTP (adres IP, port TCP i wartość nagłówka hosta) ale tylko dwa dla HTTPS (adres IP i port SSL), więc nie ' z tego, co widzę, wydaje się być możliwe.
Odpowiedź
Tradycyjnie do każdego połączenia SSL potrzebny jest jeden adres IP. Nie można dodać nagłówka hosta podczas konfigurowania powiązań. Przyczyną tego jest fakt, że nagłówek hosta jest częścią nagłówków HTTP wysyłanych przez przeglądarki, a nagłówki te są szyfrowane jako część ruchu SSL. Aby odczytać nagłówek nazwy hosta, serwer musi najpierw odszyfrować ruch, ale aby to zrobić, musi wiedzieć, którego certyfikatu użyć. Do tego potrzebowałby nagłówka hosta, aby wejść w błędne koło.
Rozwiązaniem byłoby wypróbowanie przez serwer wszystkich zainstalowanych certyfikatów i odszyfrowanie żądania. Chociaż może to zadziałać z kilkoma zainstalowanymi certyfikatami, nie zadziała w przypadku serwerów z dziesiątymi lub setkami witryn SSL. Spowolniłoby to znacznie serwer, ponieważ musiałby to zrobić dla każdego przychodzącego żądania.
Rozwiązaniem tego problemu jest rozszerzenie protokołu SSL o nazwie Server Name Indication (SNI) . Dodaje to nazwę hosta do protokołu SSL, co pozwala serwerowi na zobacz nagłówek hosta, zanim będzie musiał odszyfrować ruch SSL. To rozszerzenie nie jest obsługiwane przez żadną wersję IIS starszą niż IIS 8 (Windows 2012). Po stronie klienta SNI jest obsługiwany przez OS X 10.5.6 i Windows Vista lub nowsze . SNI nie jest obsługiwany przez SChannel w systemie Windows XP i dlatego nie jest obsługiwany przez żadną wersję przeglądarki Internet Explorer (nawet 8.0) w systemie Windows XP.
Odpowiedź
W usługach IIS (podobnie jak w przypadku innych serwerów WWW) istnieją trzy kluczowe identyfikatory, które identyfikują witrynę pod kątem żądań przychodzących:
- adres IP
- TCP port
- Nagłówek hosta
Jeśli uruchamiasz wiele witryn internetowych na jednym serwerze WWW, co najmniej jedna z tych trzech musi być inna dla każdej witryny. W wielu środowiskach serwer otrzymuje tylko jeden adres IP, więc pozostawia port TCP i nagłówek hosta, które można zmienić. Możliwe jest uruchomienie witryny https na innym porcie, wystarczy określić port w adresie URL, który nie zawsze jest pożądany (wyglądałoby to mniej więcej tak: ). Najczęściej chcesz uruchamiać wszystkie swoje witryny na porcie 80 (http) lub 443 (https), aby uzyskać czyste adresy URL. To pozostawia nagłówek hosta jako jedyny element, który chcesz zmienić.
W IIS możesz mieć wiele witryn na tej samej kombinacji IP / port, które używają SSL i nagłówków hosta.Kluczem jest to, że musisz użyć certyfikatu wieloznacznego lub certyfikatu SAN (Alternatywne nazwy podmiotu), który określa wiele nazw hostów w samym certyfikacie. Nie można ustawić powiązań nagłówka hosta dla nagłówków hosta w witrynie SSL w interfejsie użytkownika Menedżera usług IIS. Musisz to zrobić za pomocą wiersza poleceń lub ręcznie edytować plik applicationHost.config na serwerze.
Informacje od Technet na temat ustawiania tego za pomocą wiersza poleceń można znaleźć tutaj .
W Forum IIS z podobnym problemem, które również można znaleźć tutaj .
Po uruchomieniu polecenia lub ręcznej edycji pliku konfiguracyjnego, Twój plik applicationHost.config może wyglądać podobnie do tego:
<site name="first.mycompany.com"> ... <bindings> <binding protocol="http" bindingInformation="192.168.10.100:80:first.mycompany.com" /> <binding protocol="https" bindingInformation="192.168.10.100:443:first.mycompany.com" /> </bindings> ... </site> <site name="second.mycompany.com"> ... <bindings> <binding protocol="http" bindingInformation="192.168.10.100:80:second.mycompany.com" /> <binding protocol="https" bindingInformation="192.168.10.100:443:second.mycompany.com" /> </bindings> ... </site>
Wtedy zobaczysz powiązania w menedżerze IIS. Mam nadzieję, że to pomoże.
* EDYTUJ * Powyższe informacje zakładają, że to Problem był związany z IIS7. W przypadku usług IIS6 należy postępować zgodnie z inną procedurą. Informacje na ten temat można znaleźć tutaj .
Odpowiedź
rozważając Twój ostatni komentarz i po przejrzeniu odpowiedzi ekspertów, mogę polecić dwa rozwiązania.
Najlepsze rozwiązanie to:
Kup certyfikat ssl typu wildcard, który pozwoli Ci zabezpieczyć nieograniczoną liczbę subskrybentów .domain.com, która jest hostowana pod tym samym adresem IP (certyfikat SSL wymaga dedykowanego adresu IP).
Alternatywne rozwiązania:
Możesz kupić dwa różne certyfikaty SSL, po jednym dla każdej witryny. nie może hostować ich na tym samym adresie IP.