如何绕过特定 IP 地址的 SSLVerifyClient

如何绕过特定 IP 地址的 SSLVerifyClient

我对 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

相关内容