Nginx + Android + ssl = 400

ingtar nginx-forum at nginx.us
Tue Mar 3 17:30:26 UTC 2015


Тогда я ничего не понимаю :) Можно я вам расскажу свое понимание работы
nginx, а вы меня поправите? Может быть у меня фундаментальная дара в
знаниях, я такое не отрицаю :)

Есть два файла конфигов в директории conf.d

example1.conf
server { 
listen *:80;
listen *:443 ssl;
server_name example1;
ssl_certificate 1.crt;
ssl_certificate_key 1.key;
}

example2.conf
server { 
listen *:80;
listen *:443 ssl;
server_name example2;
ssl_certificate 1.crt;
ssl_certificate_key 1.key;
ssl_client_certificate ca.crt;
ssl_verify_client on;
}

Клиент устанавливает с сайтом example1 соединение. Запрос с хэдером этого
сайта приходит на сервер, обслуживающий указанный ИП адрес (Client Helo).
Nginx принял запрос, по хедеру сравнил server_name и стал обрабатывать этот
запрос по правилам конфига example1 (т.к listen равноправные, приоритет
отдается конфигу с правильынм server_name) Сервер отправляет свое Helo с
открытым ключем, клиент его проверяет и если все ок - оба договариваются об
алгоритмах шифрования и начинается обмен данными.

Это если без особых подробностей.
Для конфига example2 все тоже самое, только сервер запрашивает сертификат
клиента и если его нет - 400 ошибка.

В итоге у меня получается два сайта - первый работает без клиентских
сертификатов, второй с ними.. 
Если я вас достал глупыми вопросами - извините, я хочу разобраться в
проблеме. 

По поводу своего первоначального вопроса - выставили конфиг первым в списке,
что неправильно, но работает :)


Илья Шипицин Wrote:
-------------------------------------------------------
> нельзя настроить "только один сайт требует аутентификацию по
> сертификату"
> этот параметр согласуется в SSL Server Hello. т.е. вы требуете
> аутентификацию для всех сайтов.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256951,257035#msg-257035



Подробная информация о списке рассылки nginx-ru