Apache-2.2

允許使用者從沒有證書客戶端身份驗證的 IP 地址進入

  • March 13, 2018

我需要允許在沒有來自辦公室網路的 SSL 證書和外部的 SSL 證書的情況下訪問我的站點。

這是我的配置:

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

當我在網路內並擁有證書時 - 我可以訪問。當我在網路內並且沒有證書時 - 我無法訪問,它需要證書。

當我在網路外並且有證書時 - 我無法訪問,它會顯示基本登錄螢幕 當我在網路外並且沒有證書 - 我無法訪問時,它會顯示基本登錄螢幕

並且以下配置完美執行

<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 響應之前強制使用重新配置的客戶端驗證級別進行 SSL 重新協商。

引用自:https://serverfault.com/questions/411858