我对 HTTPD 还很陌生,所以我需要一些专业人士的见解。
以前的管理员在 Linux 机器上设置了 HTTPD。它配置为由用户访问特定 DNS(例如:https://cxg-now-test.abc)。然后使用反向代理将用户发送到位于同一框中的应用服务器(如果用户的证书有效)。这很有效。
在我的 HTTPD 配置中,我有一个这样的部分:
<VirtualHost>
...
SSLVerifyClient require
SSLVerifyDepth 3
SSLOptions +ExportCertData +StdEnvVars
SSLCACertificateFile <path to cert>
</VirtualHost>
每当有人访问https://cxg-now-test.abc,他们的证书会被读取并发送到应用程序。这同样很有效。
我想要做的是绕过特定 DNS 或 IP 地址的 SSLVerifyClient。例如:10.54.12.34
我知道我可以将 SSLVerifyClient 设置为“可选”,但对我来说这似乎不太安全。
我认为最终的解决方案是这样的:
- 全部用户:
SSLVerifyClient require
- 10.54.12.34:
SSLVerifyClient optional
顺便说一下,我们运行的是 Apache 2.2
这可行吗?
任何帮助是极大的赞赏
答案1
答案似乎是否定的。SSL验证客户端例如,不包含任何通过环境变量选择其设置的选项。
但是,您可以在虚拟主机或目录上下文中设置 SSLVerifyClient。因此,如果您将 Apache 配置为从不同的虚拟主机或目录向 10.54.12.34 提供内容,则可以在那里设置不同的 SSLVerifyClient 值。例如,在 VirtualHost 中使用 mod_rewrite:
SSLVerifyClient require
RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^10\.54\.12\.34$
RewriteRule ^(.*)$ /path/to/host-specific-dir/$1 [QSA]
<Directory /path/to/host-specific-dir>
SSLVerifyClient optional
</Directory