Я хочу создать статическую страницу вместо страницы по умолчанию «ssl_error_handshake_failure_alert» при возникновении ошибки, например, когда клиент не отправляет сертификат.
Как я могу это сделать? любая идея?
спасибо
Извините, что откопал это год спустя. Вы можете решить вашу проблему без сценариев, объединив «SSLVerifyClient optional» и «SSLRequire». В этом случае рукопожатие SSL проходит успешно, поскольку сертификат является только необязательным, однако он оказывается обязательным с помощью инструкции SSLRequire немного позже в процессе ...
Подобно:
<Location /somewhere>
SSLRequireSSL
SSLVerifyClient optional
SSLVerifyDepth 10
SSLRequire %{SSL_CLIENT_I_DN_CN} eq "YOURSELF"
ErrorDocument 403 "!FORBIDDEN!"
</Location>
Установите для вашего местоположения значение sslverifyclient optional (apache). Пример
<Location /resources/protected/>
SSLOptions +StdEnvVars
SSLVerifyClient optional
</Location>
Теперь scipt в этом месте будет иметь env, установленный с переменными env, такими как эти. Если apache смог аутентифицировать клиента, вы можете выполнить тест, аналогичный
if ( $ENV{SSL_CLIENT_S_DN_CN} && SSL_CLIENT_I_DN == "Blah issuer")
echo" we are good"
else
echo "You need to enrol for a cert.. Please contact admin @ blah"
Таким образом, аутентифицированный человек увидит строку «мы в порядке», а все остальные увидят сообщение о регистрации.
Надеюсь, это поможет!
HTTPS - это HTTP внутри туннель SSL, поэтому в случае сбоя согласования SSL HTTP-диалог между сервером и клиентом даже не начался.
Фактически, в этом случае страница с ошибкой создается клиентским браузером, поэтому вы не можете изменить эту страницу на стороне сервера.