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

статическая страница вместо стандартного ssl_error_handshake_failure_alert

Я хочу создать статическую страницу вместо страницы по умолчанию «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-диалог между сервером и клиентом даже не начался.

Фактически, в этом случае страница с ошибкой создается клиентским браузером, поэтому вы не можете изменить эту страницу на стороне сервера.