Показывать пользовательский ErrorDocument при сбое SSL-соединения (SSLVerifyClient) - PullRequest
1 голос
/ 31 августа 2011

Я настроил Apache2 для использования проверки подлинности сертификата клиента, используя:

SSLVerifyClient require

Это работает, я могу получить доступ к своему сайту с действительным сертификатом клиента.Тем не менее, когда пользователи подключаются к нему без установленного ClientCertificate, они получают запутанную ошибку из браузера.

(Chrome говорит «ERR_SSL_PROTOCOL_ERROR», Firefox говорит «ssl_error_handshake_failure_alert», Internet Explorer только отображает «Internet Explorer не может отобразитьвеб-страница '.

Я хочу показать пользователям специальный ErrorDocument, когда они пытаются получить доступ без действительного сертификата клиента.

Проблема заключается в том, что сайт не возвращает код ошибки http, но прерывает запрос, поэтому я не могу использовать Apache 'ErrorDocument'.

Последняя часть ssl_error_log такова:

[Wed Aug 31 11:11:57 2011] [info] [client 192.168.2.156] SSL library error 1 in handshake (server url:443)
[Wed Aug 31 11:11:57 2011] [info] SSL Library Error: 336105671 error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer did not return a certificate No CAs known to server for verification?
[Wed Aug 31 11:11:57 2011] [info] [client 192.168.2.156] Connection closed to child 1 with abortive shutdown (server url:443)

Как мне вернуть для этого действительный ErrorDocument?

1 Ответ

4 голосов
/ 24 апреля 2012
SSLVerifyClient optional
RewriteCond %{SSL:SSL_CLIENT_VERIFY} !=SUCCESS
RewriteRule ^/ http://localhost:8080/missing_cert.html [P,L]
...