Apache https 客户端身份验证或重定向

标签 apache redirect https mod-ssl authentication

我想知道如果浏览器没有提供有效的客户端证书,是否有办法从网页重定向浏览器。

例如:

我网站上的这一部分需要相互 SSL 身份验证:

subdomain.domain.com

这是我网站的主要部分,它是公开的:

domain.com

用于身份验证的客户端证书由我自己的 CA 颁发,自签名。 服务器证书相同。 “已知”客户还将我的 CA 添加到他们受信任的 CA 存储中。

如果没有有效客户端证书的第 3 方客户端访问 subdomain.domain.com,它将被重定向到 domain.com

我正在考虑 VHOSTs 区域中的一些配置。我玩过

RewriteCond %{SSL:SSL_CLIENT_VERIFY} !=SUCCESS

或与

SSLVerifyClient optional / required / optional_no_ca

但它似乎并没有像我想要的那样工作。

我找到了这篇文章 http://mail-archives.apache.org/mod_mbox/httpd-docs/201204.mbox/%3Ch15hm6ny7srm9zeidijezwJv4X.penango@mail.gmail.com%3E

并以某种方式理解它在说什么,但我不确定是否没有其他方法可以解决它,或者它可能同时被修复(不仅仅是文档)

谢谢。

最佳答案

我认为您走在正确的轨道上。当向服务器提供有效的客户端证书时,Apache 的 mod_ssl 将设置一些 Apache 环境变量。如果 SSL_CLIENT_S_DN_CN Apache 环境变量为空,则以下配置 block 应重定向。

<Location /path/to/protect/>
    SSLVerifyClient optional
    SSLVerifyDepth  1
    SSLOptions      +StdEnvVars

    RewriteEngine   on
    RewriteCond     %{SSL:SSL_CLIENT_S_DN_CN} =""
    RewriteRule     (.*) http://domain.com
</Location>

如果客户端证书未随请求一起提供,则 SSL_CLIENT_S_DN_CN 将为空并用作重写标准。

希望这对您有所帮助。

关于Apache https 客户端身份验证或重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15692422/

相关文章:

apache - 无法设置 SSL 以使用 MAMP 5.3

java - Luke - 当前位置没有有效的目录

apache - 如何使用Docker容器在前端和后端之间进行REST调用

magento - 使用 http ://references 在 Magento 的浏览器中验证 SSL 密封

redirect - 更新指向已重定向 URL 的链接

java - Tomcat 在 https 中编码重定向

perl - 可以在 https 上的 WWW::Mechanize 中使用超时吗?

apache - Web服务器缓存-内存与操作系统

php - REQUEST_URI 意外包含 FQDN

linux - 状态 : 301 Moved Permanently ActiveCollab