SSL证书上的Apache重写条件错误

SSL证书上的Apache重写条件错误,apache,ssl,certificate,url-redirection,Apache,Ssl,Certificate,Url Redirection,我试图在Ubuntu中配置我的apache(v2.4.23),这样,如果SSL证书失败,https页面将重定向到自定义错误页面 在各种网页中,给出了重写条件和规则的解决方案,如下所示 <Location /login/> SSLVerifyClient optional SSLVerifyDepth 3 SSLOptions +StdEnvVars +ExportCertData RewriteEngine On

我试图在Ubuntu中配置我的apache(v2.4.23),这样,如果SSL证书失败,https页面将重定向到自定义错误页面

在各种网页中,给出了重写条件和规则的解决方案,如下所示

<Location /login/>
        SSLVerifyClient optional
        SSLVerifyDepth 3
        SSLOptions +StdEnvVars +ExportCertData

        RewriteEngine On
        RewriteCond %{SSL:SSL_CLIENT_VERIFY} !^SUCCESS$
        RewriteRule .* /login_error/ [L]
</Location>

SSLVerifyClient可选
SSLVerifyDepth 3
SSLOptions+StdEnvVars+ExportCertData
重新启动发动机
RewriteCond%{SSL:SSL\u CLIENT\u VERIFY}^成功$
重写规则。*/login\u error/[L]
不幸的是,我仍然无法使这个解决方案为我工作,并且无法在证书错误时实现重定向。我刚刚得到标准的浏览器错误页面“ERR\u BAD\u SSL\u CLIENT\u AUTH\u CERT”

我的apache配置文件中可能缺少什么或配置错误

注意:我测试了以下配置以进行测试

这一个按预期重定向到登录错误:

<Location /login/>
        #SSLVerifyClient optional
        #SSLVerifyDepth 3
        #SSLOptions +StdEnvVars +ExportCertData

        RewriteEngine On
        #RewriteCond %{SSL:SSL_CLIENT_VERIFY} !^SUCCESS$
        RewriteRule .* /login_error/ [L]
</Location>

#SSLVerifyClient可选
#SSLVerifyDepth 3
#SSLOptions+StdEnvVars+ExportCertData
重新启动发动机
#RewriteCond%{SSL:SSL\u CLIENT\u VERIFY}^成功$
重写规则。*/login\u error/[L]
这一个也不会重定向:

<Location /login/>
        SSLVerifyClient optional
        SSLVerifyDepth 3
        SSLOptions +StdEnvVars +ExportCertData

        RewriteEngine On
        #RewriteCond %{SSL:SSL_CLIENT_VERIFY} !^SUCCESS$
        RewriteRule .* /login_error/ [L]
</Location>

SSLVerifyClient可选
SSLVerifyDepth 3
SSLOptions+StdEnvVars+ExportCertData
重新启动发动机
#RewriteCond%{SSL:SSL\u CLIENT\u VERIFY}^成功$
重写规则。*/login\u error/[L]

因此,在启用“SSLVERYCLIENT optional”后,重写松散效果。(我尝试了SSLVERYCLIENT和optional\u no\u ca,也不起作用。)

它被称为HTTP over SSL/TLS是有原因的。如果客户机不喜欢您的TLS设置(例如,由于缺少或无效的证书),那么它甚至不会达到客户机和服务器开始相互交谈HTTP的程度。所以你不能执行任何HTTP重定向。我知道,我不知道。为什么有些人会把它作为解决问题的方法呢?不知道,也许是不同的问题……也许这会有帮助?-->如果在每个位置上下文中需要SSL重新协商,例如,在目录或位置块中使用SSLVerifyClient,则mod_SSL必须将任何HTTP请求体缓冲到内存中,直到可以执行新的SSL握手。此指令可用于设置将用于此缓冲区的内存量。作为一种解决方法,您只需将ERR_BAD_SSL_CLIENT_AUTH_CERT.var交换给自定义SSL_errorpage,并将其重命名为ERR_BAD_SSL_CLIENT_AUTH_CERT.var……但这太脏了^^