Apache https 客户端身份验证或重定向
Posted
技术标签:
【中文标题】Apache https 客户端身份验证或重定向【英文标题】:Apache https client authentication or redirect 【发布时间】:2013-03-19 12:22:40 【问题描述】:我想知道是否有办法从网页重定向浏览器,如果它没有提供有效的客户端证书。
例如:
我网站上的此部分需要相互 SSL 身份验证:
subdomain.domain.com
这是我网站的主要部分,它是公开的:
domain.com
用于身份验证的客户端证书由我自己的 CA 颁发,自签名。 服务器证书相同。 “已知”客户还将我的 CA 添加到他们的受信任 CA 存储中。
如果有没有有效客户端证书访问 subdomain.domain.com 的 3rd 方客户端,则应将其重定向到 domain.com
我正在考虑 VHOST 区域中的一些配置。我玩过
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
不知何故理解了它在说什么,但不确定是否没有其他方法可以解决它,或者它可能是同时修复的(不仅仅是文档)
谢谢。
【问题讨论】:
没人?至少有人告诉我:这是不可能的。 【参考方案1】:这是我对这个任务的配置
<Directory "c:/inetPub/../sd">
SSLVerifyClient optional
SSLVerifyDepth 1
RewriteEngine on
RewriteCond %SSL:SSL_CLIENT_VERIFY !^SUCCESS$
RewriteRule (.*) http://other_domain.com [R]
</Directory>
【讨论】:
【参考方案2】:我认为你是在正确的轨道上。当向服务器提供有效的客户端证书时,Apache 的 mod_ssl 将设置一些 Apache 环境变量。如果 SSL_CLIENT_S_DN_CN Apache 环境变量为空,则以下配置块应重定向。
<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 客户端身份验证或重定向的主要内容,如果未能解决你的问题,请参考以下文章
Instagram 客户端身份验证在重定向后缺少#access_token