Как сделать доступ по SSL (https) для нескольких сайтов на одном IP?

В связи с разработкой некого сервиса появилась необходимость использования защищенного соединения для нескольких проектов. На сервере только одни выделенный IP.

Можно ли как-то использовать несколько сайтов с ssl на одном IP?

Из того что нашел в интернете:

— name-based vhosts (apache + mod_gnutls) ( _http://www.g-loaded.eu/2007/08/10/ssl-enabled-name-based-... )

— SSL with Virtual Hosts Using SNI (apache) ( _http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI ), SNI (nginx) ( _http://itbuben.org/blog/Unix-way/1621.html )

— ip-based vhosts (apache) ( _http://www.ibm.com/developerworks/ru/library/wa-multissl/... ) (не до конца понял принцип работы, как сервер определит на кокой внутренний ip отправить)



В принципе использование SNI подойдет, полная поддержка браузерами (старыми) не столь актуальна и важна мне. Но не понял как именно поведет себя браузер в таком случае?



Есть еще какие-то варианты настройки нескольких ssl на одном ip?

Какие варианты вы использовали или можете рекомендовать?
  • Вопрос задан
  • 13667 просмотров
Решения вопроса 1
VasiliyIsaichkin
@VasiliyIsaichkin
Web front/back-end (JS-full stack) app developer
Использую SNI с Nginx, конфигурация такая же как для одного адреса, т.е. банально указывается server_name, никаких директив специально вызывать не надо — просто работает. SNI умеет любой вменяемый браузер (а невменяемый и без него проблем имеет).
Касательно WinXP — так SNI не поддерживается в IE, другим браузерам пофигу.
wildcard сертификаты весьма дороги, но могут быть хорошим решением чтобы обойтись без SNI.SNIT
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
risik
@risik
Программист
Я, к своему стыду, не очень понимаю в теории почему и как оно работает. но у меня на хосте оно есть и работает. nginx.
server {
listen 443;
server_name host1.com;

ssl on;
ssl_certificate /path/to/host1.crt;
ssl_certificate_key /path/to/host1.key;

ssl_session_timeout 5m;

ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;

… # остальное как обычно
}

и так же для второго. Главное server_name укажите другой и ssl сертификаты
Ответ написан
@noonesshadow
SNI не поддерживается в WinXP
Поддомены + сертификат на *.ххх.ууу универсальное решение
Ответ написан
@porzione
Если браузер ничего о SNI не знает, в результате юзер увидит то же, что бы он увидел заходя по айпи, те кто там default_server.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы