nginx, apache и клиентские сертификаты
izbushka 25 апреля, 2012 - 14:42
Авторизацией по клиентским SSL сертификатам занимается nginx.
Два вопроса:
1. Как передавать инфу о сертификате на бекэнд (апач)?
Можно просто через HTTP заголовки:
proxy_set_header SSL_CLIENT_VERIFY $ssl_client_verify; proxy_set_header SSL_CLIENT_DN $ssl_client_s_dn;
Но в таком случае, клиент наверное сможет сам передать такой заголовок, надо на nginx его фильтровать..
Есть ли другой способ?
2. Можно ли назначить обработчик ошибки 400 Bad Request (No required SSL certificate was sent): отправлять на несекьюрную страницу?
Решение: У "No required SSL certificate was sent" код ошибки 496. С ним все работает
error_page 496 = @goto80; location @goto80 { rewrite ^ http://...; }
»
- Для комментирования войдите или зарегистрируйтесь
(*)
А почему у вас у кого-то кроме фронтенда есть доступ к бекенду? Я думал ваш апач настроен работать только с данным nginx и получать HTTP заголовки от него, не сомневаясь в них. А остальных клиентов слать лесом.
.
Страница доступна и по https и по http. Предполагаю, что если обратиться клиенту к http и послать эти заголовки, то nginx их отдаст апачу.. Это, конечно, решаемо (добавить и к http серверу такой заголовок в nginx), но все же. Интересует именно правильность подхода.
.
За правильность я бы поговорил :)
:wq
--
Live free or die
izbushka
Если похапе, то можно извлекать информацию о клиентском сертификате из переменных сервера (
SSL_CLIENT_S_*
, см.phpinfo
), ну и дальнейшая обработка по результатам (можно не ограничивать себя градацией есть сертификат/нет, но и расписывать индивидуально по сертификатам (или группам сертификатов)).:wq
--
Live free or die
Anarchist написал(а): Если
Сервер - бекэнд - ничего не знает о ssl, сертификатами занимается фронтэнд, поэтому и вопрос, как правильно передавать
izbushka
Интересно.
Надо бы поиграться...
Фронтенд бэкенду может передавать переменные?
:wq
--
Live free or die
Anarchist
Как минимум, в http заголовках