2008-11-09 15 views
8

Mam serwer WWW, który obsługuje różne nazwy domen, ale ma tylko jeden adres IP. To działa dobrze z wirtualnymi hostami w Apache. Teraz chcę szyfrowane połączenia SSL dla stron internetowych. Jak mogę ustawić różne certyfikaty SSL dla różnych vhostów?Jak ustawić różne certyfikaty SSL dla vhostów w Apache?

Używanie różnych adresów IP dla różnych nazw hostów byłoby rozwiązaniem - niezbyt eleganckim, ale możliwym. Ale chcę wiedzieć, w jaki sposób mogę używać różnych certyfikatów SSL dla różnych vhostów. Dlatego szukam rozwiązania z tylko jednym adresem IP.

Odpowiedz

8

UPDATE: 2013

Wydaje się, że w końcu zaczynają SNI chwycić za starszych przeglądarek opadający. Oto docs for Apache SNI i tutaj jest wikipedia article on SNI, który zawiera wykres na przeglądarkach, które go obsługują. Krótko mówiąc, wszystkie główne przeglądarki obsługują je w obsługiwanych wersjach; jeśli obsługa starszych przeglądarek jest ważna, możesz wziąć to pod uwagę.

------ poprzednia odpowiedź ------------

ssl hosts musi być przywiązany do kombinacji adres/port unikalne IP, więc nie można korzystać z wirtualnego hostingu (A przynajmniej może mieć tylko jednego hosta ssl na adres IP). Wynika to z faktu, że https rozpoczyna szyfrowanie przed parametrem Host: Parametr jest wysyłany w http, a zatem nie może ustalić, który szyfr będzie używany z nazwy hosta - wszystko, co ma to adres IP.

Byłoby głupio łatwe do naprawienia, gdyby HTTP miał polecenie TLS, aby mógł uruchomić SSL po zapytaniu o nazwę hosta, ale nikt mnie o to nie pytał.

Na ostateczną odpowiedź, patrz http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts2

+2

Obecnie jest teraz RFC 2817, który pozwala na uaktualnienie TLS w połączeniu HTTP. Jest zaimplementowany w Apache. –

+0

Ale czy przeglądarki go obsługują? – DGM

2

AFAIK to nie jest możliwe, aby skonfigurować różne certyfikaty SSL dla nazw hostów wirtualnych opartych wykorzystaniem mod_ssl. Możesz przeczytać szczegółowy powód here. Alternatywą byłoby korzystanie z hostów wirtualnych opartych na IP (co prawdopodobnie nie jest możliwe/niezbyt satysfakcjonujące) - po prostu wstaw różne dyrektywy SSLCertificateFile lub spróbuj użyć metody mod_gnutls przy użyciu metody this.

+0

Wow, że RFC dla SNI rozpoczęło się w 2003 r., A mimo to wciąż się nie przyłapało? Zaintrygowało mnie twierdzenie, że przeglądarki już to wspierają. – DGM

1

Będziesz potrzebować oddzielnej kombinacji IP: port dla każdego hosta.

RFC 3546 nie jest jeszcze możliwe. IE obsługuje go tylko podczas działania pod Vistą, a ostatnio sprawdziłem, czy Safari go nie obsługuje.

+0

Tak, przeglądarki obsługujące tę funkcję są ograniczone, ale jest to jedno z możliwych rozwiązań. Szkoda, że ​​nie ma "właściwego" rozwiązania. RFC 3546 wydaje się najlepszą nadzieją na dobre rozwiązanie. Na czas musisz zamówić więcej adresów IP lub ograniczyć przeglądarki. – Mnementh

+0

Tak, lub brzydkie tymczasowe rozwiązanie działania na innym porcie. RFC3546 stanie się, ale ten dzień jest nadal niestety bardzo odległy. – bobince

1

Podczas gdy wszystko, co podano w DGM, jest prawdziwe, podjęto pewne próby obejścia wymogu unikalnego adresu IP dla każdego certyfikatu, w tym mod_gnutls i używania TLS extensions. Są pewne wady, ale mogą być dla ciebie akceptowalne.

1

Wreszcie jest to możliwe! Trzeba zarówno serwera i klienta, aby wspierać Nazwa serwera Wskazanie (SNI)

przeglądarek, które wspierają sni:

  • Mozilla Firefox 2.0 lub nowsza
  • Opera 8.0 lub nowszy (z TLS 1.1 włączony)
  • Internet Explorer 7.0 lub nowszy (na Vista, XP) nie
  • Google Chrome
  • Safari 3.2.1 na Mac OS X 10.5.6

Ten dokument pokazuje, motyka, aby skonfigurować serwer: SSL with Virtual Hosts Using SNI

Powiązane problemy