Тогда я ничего не понимаю :) Можно я вам расскажу свое понимание работы 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. т.е. вы требуете
> аутентификацию для всех сайтов.