我觉得很奇怪,我找不到信息也没有问题,但我正处于通过 apache 反向代理为某些网站提供服务的情况。
我必须通过 apache 上的 https 切换所有流量(包括 lan)。它实际上使用服务器和客户端证书通过 https 连接到这些站点。
我需要一个客户端证书的解决方案,对于内联网 IP 范围来说完全不需要,但对于世界其他地方来说却是强制性的。
Apache 使用虚拟主机
<location / >
SSLVerifyClient require
SSLVerifyDepth 10
SSLOptions +StrictRequire
.... otherstuff ......
</location>
对于客户端证书,因为我没有支持 SNI 的 apache,所以服务器通配符证书位于第一个虚拟主机上,而客户端证书在位置部分重新协商。一个选项是将 apache 升级到支持 SNI 的版本,但在我看来对我的 porpoises 没什么用。
答案1
看看答案允许来自 IP 地址且无需证书客户端身份验证的用户访问基本上,您使用 mod_rewrite 检查客户端是否已通过验证,如果已通过,则让其通过。如果没有通过,则返回 IP 检查。
请注意,您应该将SSLVerifyClient
语句放在配置的根级别,以避免昂贵的 SSL 重新协商。