1

我正在使用 httpd 2.2.3 在 RHEL5 上配置我的 Apache 服务器。用户使用具有多个证书的智能卡进行身份验证,但我们希望将浏览器显示的选择限制为特定的。我们已经弄清楚了如何通过将 SSLCADNRequestFile 设置为包含该特定类型证书的中间链的 .pem 来做到这一点。

问题是我们在单个 IP 上定义了多个基于名称的虚拟主机。即使服务器名称不匹配,Apache 似乎也会根据该 IP 上的第一个虚拟主机将响应发送到它接受的证书的浏览器。因此,除非我在第一个虚拟主机或服务器级别定义 SSLCADNRequestFile,否则我无法限制证书选择。此外,所有其他虚拟主机都会受到此设置的影响。

有没有办法使用基于名称的虚拟主机并为每个虚拟主机定义 SSLCADNRequestFile?我的配置有点不同,所以可能还有其他问题在起作用,下面是我的大致配置。

NameVirtualHost *:443
<VirtualHost *:443>
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
    SSLCertificateFile /etc/pki/tls/certs/certificate.crt
    SSLCertificateKeyFile /etc/pki/tls/private/private.key
    SSLCACertificateFile /etc/pki/tls/certs/root-certs.pem
    SSLCADNRequestFile conf.d/certs-email-only.pem
    SSLVerifyClient none
    SSLVerifyDepth 2
    SSLOptions +ExportCertData

    DocumentRoot /var/www/mysite
    ServerName www.mysite.com
    DirectoryIndex main.html

    ProxyPass /api/login ajp://localhost:8009/backend/login
    ProxyPassReverse /api/login ajp://localhost:8009/backend/login

    Alias /login /var/www/login
    <Directory /var/www/login>
        DirectoryIndex login.html
    </Directory>

    ProxyPass /logout ajp://localhost:8009/backend/logout
    ProxyPassReverse /logout ajp://localhost:8009/backend/logout

    <Location /api>
         SSLVerifyClient require
         ProxyPass ajp://localhost:8009/backend
         ProxyPassReverse ajp://localhost:8009/backend
         ProxyPassReverseCookiePath /backend /api
         ProxyPassReverseCookieDomain localhost www.mysite.com
    </Location>
</VirtualHost>
<VirtualHost *:443>
     # VirtualHost impacted by the SSLCADNRequestFile in the above vhost
</VirtualHost>
4

0 回答 0