我正在尝试弄清楚如何在证书验证失败时返回一个不同的状态响应代码(即没有证书、无效或吊销等)。如果证书是好的,我已经让一切正常工作。
我想要的是返回一个410 Gone代码,让它看起来像域根本不存在,而不是Apache的mod_ssl正常响应“handshake_error”或“revoked_certificate”等。
我试过使用mod_rewrite,但是由于mod_ssl直接处理这个问题,所以似乎没有使用这个重写。
我是这么试的。
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLVerifyClient require
SSLVerifyDepth 1
RewriteEngine On
RewriteCond %{SSL:SSL_CLIENT_VERIFY} !=SUCCESS
RewriteRule .* - [R=410,L]
# ... other virtual host configuration ...
</VirtualHost>
1条答案
按热度按时间c0vxltue1#
我的期望是:在您配置时
您要求必须有一个有效的客户端证书。没有它,将无法建立连接,从而无法传输正确的http状态代码。由于没有连接,您不能期望mod_rewrite执行任何操作。
一种实现你所希望的方法是允许没有客户端证书的连接,并在应用程序代码中处理行为。
我不想花太多的时间来混淆错误条件,这会使调试变得更困难,并且任何攻击者都可以看到有一个dns条目以及它指向的位置。