Назад | Перейти на главную страницу

Игнорировать недействительный сертификат клиента на apache

Конфигурация: Apache 2.4.10 на debian.

Для нашего сайта я работаю над аутентификацией сертификата клиента. При доступе к определенной странице запрашивается сертификат клиента, а затем выполняется проверка PHP (ведущая к входу в систему или нет).

Он отлично работает для действующего сертификата клиента (принятого или нет для входа в систему, но это часть кода PHP). Но если данный клиентский сертификат недействителен (то есть с истекшим сроком действия), я получаю только «Сбой безопасного соединения» (с использованием Firefox) без вызова моего кода PHP. Более того (по крайней мере, с Firefox) мне нужно очистить данные сеанса, чтобы заставить FF запросить новый сертификат.

Это не очень удобно для пользователей. Есть ли способ заставить apache / Firefox продолжить работу (путем вызова базового PHP-кода) и позволить сайту работать с SSL_CLIENT_VERIFY содержание и решить, что делать, даже если сертификат недействителен?

На данный момент моя конфигурация (в формате.htaccess для тестов) это:

<Files user-certificate>
 SSLVerifyClient optional
 SSLOptions +StdEnvVars +ExportCertData +OptRenegotiate
 SSLVerifyDepth 3
</Files>

Я пытался добавить

 RewriteCond %{SSL:SSL_CLIENT_VERIFY} !SUCCESS
 RewriteRule ^/(.*)$ /user-bad-certificate

при попытке безуспешно перенаправить плохие сертификаты на другую страницу. Кстати OptRenegotiate выполняется сервером, но клиент, похоже, отказывается от него (поэтому я могу удалить эту опцию).

С уважением.

Изменить: он также отлично работает, если пользователь не предоставляет сертификат (т.е. у клиента его нет или он нажимает «отменить» в поле выбора сертификата).