nginx, apache и клиентские сертификаты

Авторизацией по клиентским 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://...;
}

(*)

izbushka написал(а):
клиент наверное сможет сам передать такой заголовок

А почему у вас у кого-то кроме фронтенда есть доступ к бекенду? Я думал ваш апач настроен работать только с данным nginx и получать HTTP заголовки от него, не сомневаясь в них. А остальных клиентов слать лесом.

.

Страница доступна и по https и по http. Предполагаю, что если обратиться клиенту к http и послать эти заголовки, то nginx их отдаст апачу.. Это, конечно, решаемо (добавить и к http серверу такой заголовок в nginx), но все же. Интересует именно правильность подхода.

.

izbushka написал(а):
Интересует именно правильность подхода.

За правильность я бы поговорил :)

:wq
--
Live free or die

izbushka

izbushka написал(а):
Авторизацией по клиентским SSL сертификатам занимается nginx.
Два вопроса:
1. Как передавать инфу о сертификате на бекэнд (апач)?
Можно просто через HTTP заголовки:

proxy_set_header SSL_CLIENT_VERIFY $ssl_client_verify;
proxy_set_header SSL_CLIENT_DN $ssl_client_s_dn;

Но в таком случае, клиент наверное сможет сам передать такой заголовок, надо на nginx его фильтровать..
Есть ли другой способ?

Если похапе, то можно извлекать информацию о клиентском сертификате из переменных сервера (SSL_CLIENT_S_*, см. phpinfo), ну и дальнейшая обработка по результатам (можно не ограничивать себя градацией есть сертификат/нет, но и расписывать индивидуально по сертификатам (или группам сертификатов)).

:wq
--
Live free or die

Anarchist написал(а): Если

Anarchist написал(а):
Если похапе, то можно извлекать информацию о клиентском сертификате из переменных сервера

Сервер - бекэнд - ничего не знает о ssl, сертификатами занимается фронтэнд, поэтому и вопрос, как правильно передавать

izbushka

izbushka написал(а):
Anarchist написал(а):
Если похапе, то можно извлекать информацию о клиентском сертификате из переменных сервера

Сервер - бекэнд - ничего не знает о ssl, сертификатами занимается фронтэнд, поэтому и вопрос, как правильно передавать

Интересно.
Надо бы поиграться...

Фронтенд бэкенду может передавать переменные?

:wq
--
Live free or die

Anarchist

Anarchist написал(а):
Фронтенд бэкенду может передавать переменные?

Как минимум, в http заголовках

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".