Я настроил 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?