![在本地网络 apache2 上不要使用客户端证书认证](https://linux22.com/image/661272/%E5%9C%A8%E6%9C%AC%E5%9C%B0%E7%BD%91%E7%BB%9C%20apache2%20%E4%B8%8A%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%AF%81%E4%B9%A6%E8%AE%A4%E8%AF%81.png)
我希望有人能帮助我解决这个问题......
我在 Ubuntu 14.04 机器上运行 Apache 2.4.7 服务器,上面有一些面向公众的网站。对于其中一些网站,我使用自签名证书实现了客户端证书身份验证。我试图更改配置,这样当客户端在与服务器相同的网络上连接到网站时,就可以完全绕过身份验证。
这是我的配置文件的片段:
SSLEngine On
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
SSLCertificateFile /etc/ssl/ca/certs/server.crt
SSLCertificateKeyFile /etc/ssl/ca/private/server.key
SSLCACertificateFile /etc/ssl/ca/certs/serverCA.crt
SSLVerifyClient require
SSLProxyEngine Off
ProxyRequests Off
我尝试通过移动SSLVerifyClient require
到Location
如下块来修改此配置:
<Location />
Order deny,allow
Deny from all
Allow from 192.168.1.0/24
SSLVerifyClient require
Satisfy any
</Location>
不幸的是,这并没有起作用,我仍然会被提示输入证书,或者我的网站将可从互联网上免费访问。
非常感谢您的帮助
答案1
我在这里找到了答案:允许来自 IP 地址且无需证书客户端身份验证的用户访问
答案概要如下:
<VirtualHost *:443>
SSLEngine On
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
SSLCertificateFile /etc/ssl/ca/certs/server.crt
SSLCertificateKeyFile /etc/ssl/ca/private/server.key
SSLCACertificateFile /etc/ssl/ca/certs/serverCA.crt
SSLVerifyClient optional
SSLProxyEngine Off
ProxyRequests Off
<Location />
Order deny,allow
Deny from all
Satisfy any
Allow from 192.168.1.0/24
RewriteEngine on
RewriteCond %{SSL:SSL_CLIENT_VERIFY} !^SUCCESS$
RewriteCond %{REMOTE_ADDR} !^192.168.1.[0-9]*$
RewriteRule ^ - [F]
<Location />
</VirtualHost>
这里的主要变化是 Location 部分中的 mod_rewrite 指令和SSL验证客户端从要求到选修的