我們如何在 Apache-on-Linux 和執行 Windows 和 OS X 的客戶端電腦之間加密針對 Windows 域的身份驗證?
設置:我們有一台機器 ( SRV1 ) 通過 Apache 為執行 Windows 7 ( CLI1 )、OS X ( CLI2 ) 的客戶端機器以及可能執行 Windows XP (CLI3) 的其他一些客戶端提供 Subversion 。雖然我們提供的材料安全性不高,但用於訪問的使用者名和密碼在其他地方使用,因此我們希望對身份驗證部分進行加密。
SRV1:尚未加入我們的域 ( DOMAIN1 )。RedHat Linux 5.5、Apache 2.n、Subversion 1.6.12。我們決定通過 Apache 執行 subversion 並
mod_dav_svn
實現連接靈活性;顛覆書推薦了這種方法以提高安全性,我們將需要給我們的使用者。我們的團隊:Mediocre Scripter ( MS )、Windows Sysadmin ( WS ) 和 Linux Sysadmin ( LS )。
LS 沒有使用 Active Directory 或與 Windows 伺服器進行過多通信的經驗。WS 在 Apache 身份驗證方面沒有太多經驗。MS 有一定的歷史知識,對基本的 Web 協議有一定的了解。
排除的方法:
- 基本身份驗證以明文形式傳輸使用者名和密碼。
2)摘要式身份驗證似乎從未流行過。
SSL 將用於加密身份驗證,但也會使伺服器陷入癱瘓。早期測試表明傳輸減速係數為 15。我們實際上只需要加密使用者名和密碼。通常,這不是問題,但我們的使用者可能會推動大文件進出顛覆(無論是否合適,顛覆已成為政治強制規定)。
我們當然可以為這項任務分配單獨的使用者名和密碼,但我們正試圖擺脫這種做法。
我們從哪裡開始?我們最終將要針對 DOMAIN1 中包含 DOMAIN2 中的一些成員的組進行身份驗證,但那是另一天的事了。
您可以將 Active Directory 用作 Kerberos KDC 並使用HTTP SPNEGO 身份驗證(或 Kerberos,如果不可用)。這將通過 HTTP 使用 Kerberos 協商身份驗證(因此您的密碼將被加密,除其他外)。Active Directory 可以很好地與 MIT Kerberos 5 客戶端庫(在 Linux 和 OSX 上可用)配合使用,當然 Active Directory 也可以與 Windows 客戶端一起使用。缺點是它需要在客戶端進行額外的設置(瀏覽器或命令行客戶端,我認為
svn
可以使用 MIT Kerberos 5)。或者,如果您信任 Apache Httpd 管理員,您可以從那裡使用 Active Directory 作為 LDAP 伺服器。我認為摘要式身份驗證不可能做到這一點(它更複雜,因為您需要雜湊在 LDAP 端採用特定格式),因此您需要 Basic+SSL。
我對您關於 SSL 的 15 減速工廠感到驚訝,即使是大文件也是如此。SSL/TLS 握手總是有成本,但在那之後成本應該是最小的(實際上對於較大的文件它幾乎可以忽略不計)。