我需要允许从我的办公室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。
仅在外部虚拟主机上需要客户端证书。