Odpowiedzi:
Myślę, że dobrym pomysłem jest wyjaśnienie, na czym tak naprawdę polega problem z wirtualnymi hostami i SSL / TLS.
Kiedy łączysz się z serwerem Apache przez HTTP, wysyłasz zestaw nagłówków HTTP. Wyglądają tak:
GET /index.html HTTP/1.1
Host: www.nice-puppies.com
Jeśli masz wirtualny hosting apache, zajrzy do pola hostów, a następnie pobierz odpowiedni index.html dla siebie. Problem polega na dodaniu SSL / TLS. Serwer konfiguruje szyfrowanie przed wysłaniem żądania HTTP. Dlatego serwer nie wie, czy przejdziesz na stronę www.nice-puppies.com lub www.evil-haxxor.com, dopóki nie zostanie zakończone uwierzytelnianie / szyfrowanie. Serwer nie może zgadnąć (ponieważ wysłanie niewłaściwego certyfikatu powoduje nieprzyjemny komunikat błędu).
Jednym z rozwiązań jest certyfikat wieloznaczny (jak wspomniano powyżej), który jest ważny dla * .nice-puppies.com. W ten sposób możesz użyć tego samego certyfikatu dla wielu domen, ale nie możesz mieć certyfikatu * .com (dobrze, możesz, ale byłoby to bardzo złe dla wszystkich innych), więc ogólnie będziesz potrzebował osobnego adresu IP dla każdego Domena HTTPS.
Prawdziwym rozwiązaniem tego problemu jest „Wskazanie nazwy serwera”:
http://en.wikipedia.org/wiki/Server_Name_Indication
Zaczyna się dopiero pojawiać na serwerach i klientach internetowych, więc nie jest to tak naprawdę coś, z czego można teraz korzystać, ale mam nadzieję, że za kilka lat nie będzie to tak dużym problemem.
Problem polega na tym, że certyfikat SSL jest powiązany z adresem IP, a nie nazwą hosta. Gdy połączenie przychodzi na adres IP dla żądania HTTPS, pierwszą czynnością jest nawiązanie komunikacji SSL poprzez przekazanie certyfikatu serwera i / lub certyfikatu klienta. Na tym etapie uzgadniania połączenia serwer Apache nie ma możliwości dowiedzenia się, do czego służy zapytanie. Inaczej jest w przypadku ruchu HTTP (non-SSL), ponieważ po ustanowieniu połączenia serwer Apache może określić konfigurację hosta wirtualnego, która będzie używana, jeśli klient wyśle Host
nagłówek lub przekaże go do pierwszego skonfigurowanego hosta wirtualnego.
Jeśli miałeś wiele wirtualnych hostów w tej samej domenie, możesz skonfigurować pojedynczy certyfikat wieloznaczny na adres IP i zdefiniować wiele wirtualnych hostów z różnymi nazwami serwerów; Jeśli jednak te nazwy serwerów nie będą miały tej samej nazwy domeny, wygenerują błędy serwera klienta. Działałoby to, ponieważ certyfikat wieloznaczny byłby ważny dla wszystkich nazw hostów pod tą nazwą domeny. Potrzebny byłby inny adres IP, gdyby nazwy domen były różne, ponieważ pierwszym certyfikatem zdefiniowanym dla tego adresu IP byłby ten prezentowany do łączenia klientów.
Można go dodać do jednego certyfikatu ssl jako SAN (alternatywna nazwa podmiotu). Podczas mojej działalności musiałem poprosić o certyfikat organizacji sll. użyłem globalsign.
Właściwie dzięki nowoczesnemu oprogramowaniu MOŻESZ obsługiwać wiele witryn HTTPS za pośrednictwem jednego adresu IP, korzystając z nowej funkcji o nazwie „SNI - Server Name Indication”.
http://en.wikipedia.org/wiki/Server_Name_Indication
http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI
Sam jeszcze tego nie użyłem, ale to dobrze brzmi dla witryn wewnętrznych i intranetowych. Większość nowoczesnych przeglądarek obsługuje SNI. IE6 nie obsługuje SNI, ale IE7 tak.
(Poprawka: 20100426 - SNI nie jest w ogóle obsługiwany w systemie Windows XP. Windows Vista i nowsze obsługują SNI. Patrz „Sekcja 2.2.3” na stronie http://msdn.microsoft.com/en-us/library/dd208005% 28v = PROT.13% 29.aspx # id8 ).
Myślę, że OP pyta, co się stanie, jeśli doda certyfikat SSL do adresu IP, który ma wiele wirtualnych hostów. Jeśli żaden z pozostałych wirtualnych hostów nie używa certyfikatu SSL, powinien być w porządku.
Certyfikat UC jest zdecydowanie najlepszym rozwiązaniem: http://www.sslshopper.com/unified-communications-uc-ssl-certificates.html
Jeśli spróbujesz dodać dwa certyfikaty w tym samym adresie IP, wszędzie pierwszy certyfikat zostanie użyty. Jeden adres IP - jeden certyfikat SSL.
Jeśli chcesz uzyskać więcej certyfikatów SSL w tym samym adresie IP, rozważ uzyskanie certyfikatu z wieloma domenami (tzw. UCC - sprawdź @ godaddy ) lub certyfikatu wieloznacznego (droższego).