página estática em vez do padrão “ssl_error_handshake_failure_alert”

2

Eu quero criar uma página estática em vez da página padrão "ssl_error_handshake_failure_alert" quando ocorre um erro, por exemplo, quando o cliente não envia nenhum certificado.

como posso fazer isso? alguma ideia?

obrigado

    
por user71669 22.02.2011 / 09:11

3 respostas

2

Desculpe por desenterrar isso um ano depois. Você pode resolver seu problema sem criar scripts combinando "SSLVerifyClient optional" e "SSLRequire". Nesse caso, o handshake SSL é bem-sucedido, já que o certificado é apenas opcional, no entanto, ele acaba sendo obrigatório, pela declaração SSLRequire um pouco mais adiante no processo ...

Como:

<Location /somewhere>
SSLRequireSSL
SSLVerifyClient optional
SSLVerifyDepth 10
SSLRequire %{SSL_CLIENT_I_DN_CN} eq "YOURSELF"
ErrorDocument 403 "!FORBIDDEN!"
</Location>
    
por 15.03.2012 / 22:15
1

HTTPS é HTTP dentro de um túnel SSL, portanto, se a negociação SSL falhar, a conversação HTTP entre o servidor e o cliente nem sequer foi iniciada.

Na verdade, neste caso, a página de erro é gerada pelo navegador do cliente, então você não pode alterar esta página no lado do servidor.

    
por 22.02.2011 / 12:40
1

Defina sua localização como sslverifyclient opcional (apache). Um exemplo

<Location /resources/protected/>
    SSLOptions +StdEnvVars
    SSLVerifyClient optional
</Location>

Agora, um scipt nesse local terá seu env configurado com env vars, como estes . Se o apache foi capaz de autenticar o cliente, então você pode fazer um teste semelhante ao

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"

Assim, uma pessoa autenticada verá a linha "estamos bem" enquanto todos os outros verão a mensagem de inscrição.

Espero que isso ajude!

    
por 04.03.2011 / 21:09