允许来自IP地址的用户无需证书客户端身份validation

我需要允许从我的办公室networking和外部的SSL证书没有SSL证书访问我的网站。

这是我的configuration:

<Directory /srv/www> AllowOverride All Order deny,allow Deny from all # office network static IP Allow from xxx.xxx.xxx.xxx SSLVerifyClient require SSLOptions +FakeBasicAuth AuthName "My secure area" AuthType Basic AuthUserFile /etc/httpd/ssl/index Require valid-user Satisfy Any </Directory> 

当我在networking内部并拥有证书时 – 我可以访问。 当我在networking内部并且没有证书时 – 我无法访问,它需要证书。

当我在外面的networking和证书 – 我无法访问,它显示我的基本login屏幕当我在外面的networking,没有证书 – 我无法访问,它显示我的基本login屏幕

并遵循以下configuration完美工作

  <Directory /srv/www> AllowOverride All Order deny,allow Deny from all Allow from xxx.xxx.xxx.xxx AuthUserFile /srv/www/htpasswd AuthName "Restricted Access" AuthType Basic Require valid-user Satisfy Any </Directory> 

这是我如何实现(xxx.xxx.xxx.xxx – 允许访问此地址没有证书):

  SSLVerifyClient optional SSLOptions -FakeBasicAuth +StrictRequire -StdEnvVars -ExportCertData SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128 RewriteEngine on RewriteCond %{SSL:SSL_CLIENT_VERIFY} !^SUCCESS$ RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx$ RewriteRule ^ - [F] 

请注意,SSLVerifyClient不应该在目录上下文中:

在每个目录上下文中,在HTTP请求被读取之后但在发送HTTP响应之前,它强制使用重新configuration的客户端validation级别的SSL重新协商。

据推测,在您的networking中,服务器与从外部访问时相比,具有不同的(内部,私有)IP。

在这种情况下,设置两个虚拟主机是最简单的 – 一个是in.ter.nal.ip:443,一个是ex.ter.nal.ip:443。

仅在外部虚拟主机上需要客户端证书。