静态页面而不是默认的“ssl_error_handshake_failure_alert”

当发生错误时,我想创build一个静态页面而不是默认的“ssl_error_handshake_failure_alert”页面,例如当客户端不发送任何证书时。

我怎样才能做到这一点? 任何想法?

thankss

对不起一年后挖掘这个。 您可以通过组合“SSLVerifyClient optional”和“SSLRequire”来解决您的问题而无需编写脚本。 在这种情况下,SSL握手会成功,因为证书只是可选的,然而,事实certificate这是强制性的,SSLRequire语句在稍后的过程中…

喜欢:

<Location /somewhere> SSLRequireSSL SSLVerifyClient optional SSLVerifyDepth 10 SSLRequire %{SSL_CLIENT_I_DN_CN} eq "YOURSELF" ErrorDocument 403 "!FORBIDDEN!" </Location> 

HTTPS是SSL隧道的HTTP,所以如果SSL关联失败,服务器和客户端之间的HTTP会话还没有开始。

事实上,在这种情况下,错误页面是由客户端的浏览器生成,那么您不能在服务器端更改此页面。

将您的位置设置为sslverifyclient可选(apache)。 一个例子

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

现在在这个位置的一个scipt将会有env这样的环境variables。 如果Apache能够进行客户端身份validation,那么你可以做一个类似的testing

 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" 

所以一个authentication的人会看到“我们很好”的线,而其他人都会看到注册信息。

我希望这有帮助!