Page 1 of 1

SSL

Posted: Sun Jul 21, 2013 11:20 am
by toplevelhost
При включении SSL, сертификат устанавливается на nginx и открывается порт 443
Но как сделать, чтобы сертификат был только на apache? А nginx только пропускал через себя 443 порт ?
Иными словами, как сделать что бы nginx принимал 443 порт, обрабатывал правила и перенаправлял на apache? Что бы сертификаты стояли только со стороны бэкенда (апаче)
Это мне нужно, если я использую несколько фронтэндов и один бэкенд.
Спасибо.

Re: SSL

Posted: Sun Jul 21, 2013 11:26 am
by skid
Чтобы обработать https запрос у nginx-а тоже должны быть установлены сертификаты.

Re: SSL

Posted: Sun Jul 28, 2013 8:34 am
by XakRu
toplevelhost wrote:При включении SSL, сертификат устанавливается на nginx и открывается порт 443
Но как сделать, чтобы сертификат был только на apache? А nginx только пропускал через себя 443 порт ?
Иными словами, как сделать что бы nginx принимал 443 порт, обрабатывал правила и перенаправлял на apache? Что бы сертификаты стояли только со стороны бэкенда (апаче)
Это мне нужно, если я использую несколько фронтэндов и один бэкенд.
Спасибо.
читайте подробнее о технологии ssl.
SSL реализуется поверх любого другого протокола транспортного уровня, таких как HTTP, FTP, SMTP, NNTP и XMPP.
Сначала устанавливается зашифрованное соединение между клиентом и серером,а затем уже идет диалог HTTP, FTP ...
Т.е. смысла нет устанавливать ssl между nginx и apache, и вто же время пускать незашифрованный трафик клиенту.
И да, еще. Как обстоят дела у весты по поводу ssl сертиффикатов, два разных сертификата ведь не смогут работать на одном сервере? или использовать разные порты? тогда теряем 443 порт как для ссл. Как в этом случае разруливает веста?, на генту вики есть статьи по объоду ограничений, но тогда теряется сама суть ssl.

Re: SSL

Posted: Mon Jul 29, 2013 4:06 am
by demian
XakRu wrote:
toplevelhost wrote:При включении SSL, сертификат устанавливается на nginx и открывается порт 443
Но как сделать, чтобы сертификат был только на apache? А nginx только пропускал через себя 443 порт ?
Иными словами, как сделать что бы nginx принимал 443 порт, обрабатывал правила и перенаправлял на apache? Что бы сертификаты стояли только со стороны бэкенда (апаче)
Это мне нужно, если я использую несколько фронтэндов и один бэкенд.
Спасибо.
читайте подробнее о технологии ssl.
SSL реализуется поверх любого другого протокола транспортного уровня, таких как HTTP, FTP, SMTP, NNTP и XMPP.
Сначала устанавливается зашифрованное соединение между клиентом и серером,а затем уже идет диалог HTTP, FTP ...
Т.е. смысла нет устанавливать ssl между nginx и apache, и вто же время пускать незашифрованный трафик клиенту.
И да, еще. Как обстоят дела у весты по поводу ssl сертиффикатов, два разных сертификата ведь не смогут работать на одном сервере? или использовать разные порты? тогда теряем 443 порт как для ссл. Как в этом случае разруливает веста?, на генту вики есть статьи по объоду ограничений, но тогда теряется сама суть ssl.
ограничения колличества ssl сертификатов существуют для apache с установленным модулем mod_ssl - 1 сервификат на один физический IP, обходится установкой модуля gnu_tls

nginx изначально использует tls ограничений нет.

Re: SSL

Posted: Wed Jul 31, 2013 6:03 pm
by XakRu
Вы наверное не совсем в теме. Я же писал что ssl устанавливается до того как сервер получит заголовок HOSTNAME
Так же прилагаю выдержку с оф. докeментации nginx

Code: Select all

Выбор HTTPS-сервера по имени

Типичная проблема возникает при настройке двух и более серверов HTTPS, слушающих на одном и том же IP-адресе:

server {
    listen          443 ssl;
    server_name     www.example.com;
    ssl_certificate www.example.com.crt;
    ...
}

server {
    listen          443 ssl;
    server_name     www.example.org;
    ssl_certificate www.example.org.crt;
    ...
}
В такой конфигурации браузер получит сертификат сервера по умолчанию, т.е. www.example.com, независимо от запрашиваемого имени сервера. Это связано с поведением протокола SSL. SSL-соединение устанавливается до того, как браузер посылает HTTP-запрос, и nginx не знает имени запрашиваемого сервера. Следовательно, он лишь может предложить сертификат сервера по умолчанию.

Наиболее старым и надёжным способом решения этой проблемы является назначение каждому HTTPS-серверу своего IP-адреса:

server {
    listen          192.168.1.1:443 ssl;
    server_name     www.example.com;
    ssl_certificate www.example.com.crt;
    ...
}

server {
    listen          192.168.1.2:443 ssl;
    server_name     www.example.org;
    ssl_certificate www.example.org.crt;
    ...
}

Re: SSL

Posted: Wed Jul 31, 2013 6:06 pm
by XakRu
предвкушаю что снова увижу надпись о gnu_tls.
Но здесь ведь пользователь не защищен от атаки MITM. Да и видно на какой домен пользователь идет. Тем более в связи с новыми законами которые обсуждают чиновники.