Apache-2.2

Apache ~ 如何強制特定 IP 的 SSL 客戶端身份驗證

  • April 26, 2016

無法弄清楚如何輕鬆管理對我的 SSL 網站的訪問。

我正在嘗試允許基於客戶端 IP 訪問特定位置。

如果客戶端 IP = 192.168.xx => 繞過客戶端證書身份驗證如果客戶端 IP !=192.168.xx => 請求客戶端證書身份驗證。

我嘗試了幾種方法(URL重寫,Vhost,Allow,deny,satisfay ….沒有成功..)

我的 SSL 客戶端驗證工作正常,我只是堅持這個基本的“如果”請求。我正在執行 Apache 2.12。

我已經嘗試實現http://httpd.apache.org/docs/2.0/ssl/ssl_howto.html(如何要求具有強密碼和基本身份驗證或客戶端證書的 HTTPS 以訪問 Intranet 網站上的子區域對於來自 Internet 但仍允許對 Intranet 上的客戶端進行純 HTTP 訪問的客戶端?)但它不起作用..

非常令人沮喪,因為這正是我正在尋找的;)(除了 authtype basic)

謝謝

<Location /folder>
SSLVerifyClient      require
SSLOptions           +StrictRequire
SSLRequire           %{SSL_CIPHER_USEKEYSIZE} >= 128
Satisfy Any
Order deny,allow
Deny from all
Allow from 192.168.x.x
</Location>

好的,看起來在 Apache < 2.3 上不可能做到這一點

我已經更新到 Apache 2.4 並添加了“if”指令:

&lt;If "%{REMOTE_ADDR} == 'xx.xx.xx.xx"&gt;
SSLVerifyClient      require
           SSLOptions           +StrictRequire
           SSLRequire           %{SSL_CIPHER_USEKEYSIZE} &gt;= 128
&lt;/If&gt;

如果你想強制使用網路,只需像這樣使用正則表達式:

&lt;If "%{REMOTE_ADDR} !~ /^regex$ SSLVerifyClient require SSLVerifyDepth 2 &lt;/If&gt;

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