使用 SASL 保護 Svnserve
什麼是 SASL?
Cyrus 簡易認證與安全層是由卡內基美隆大學撰寫的開放原始碼軟體。它為任何網路協定新增了通用的身份驗證和加密功能,並且從 Subversion 1.5 及更高版本開始,svnserve 伺服器和 TortoiseSVN 用戶端都知道如何使用這個程式庫。
若要更完整地討論可用的選項,您應該查看 Subversion 書籍中使用 SASL 保護 svnserve章節。如果您只是在尋找一種簡單的方法,在 Windows 伺服器上設定安全的身份驗證和加密,以便可以通過危險的網際網路安全地存取您的儲存庫,請繼續閱讀。
SASL 身份驗證
若要在伺服器上啟用特定的 SASL 機制,您需要執行三件事。首先,在您儲存庫的 svnserve.conf 檔案中建立一個 [sasl]
區段,並包含以下鍵值對
use-sasl = true
其次,在方便的位置建立一個名為 svn.conf 的檔案 - 通常在安裝 subversion 的目錄中。
第三,建立兩個新的登錄檔項目,以告知 SASL 在哪裡找到東西。建立一個名為以下的登錄檔機碼
[HKEY_LOCAL_MACHINE\SOFTWARE\Carnegie Mellon\Project Cyrus\SASL Library]
並在其中放置兩個新的字串值:SearchPath
設定為包含 sasl\*.dll 外掛程式的目錄路徑(通常在 Subversion 安裝目錄中),以及 ConfFile
設定為包含 svn.conf 檔案的目錄。如果您使用 CollabNet 安裝程式,則這些登錄檔機碼將會自動為您建立。
編輯 svn.conf 檔案以包含以下內容
pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: DIGEST-MD5 sasldb_path: C:\TortoiseSVN\sasldb
最後一行顯示身份驗證資料庫的位置,該資料庫是一個名為 sasldb 的檔案。它可以放在任何地方,但一個方便的選擇是儲存庫的父路徑。請確保 svnserve 服務具有對此檔案的讀取權限。
如果 svnserve 已經在執行,您需要重新啟動它,以確保它讀取更新後的設定。
現在一切都設定好了,您需要做的就是建立一些使用者和密碼。為此,您需要 saslpasswd2
程式。如果您使用 CollabNet 安裝程式,則該程式將位於安裝目錄中。使用類似以下的命令
saslpasswd2 -c -f C:\TortoiseSVN\sasldb -u realm username
-f
開關指定資料庫位置,realm
必須與您在儲存庫的 svnserve.conf 檔案中定義的值相同,而 username 正是您期望的使用者名稱。請注意,realm 不允許包含空格字元。
您可以使用 sasldblistusers2
程式列出儲存在資料庫中的使用者名稱。
SASL 加密
若要啟用或停用不同等級的加密,您可以在儲存庫的 svnserve.conf 檔案中設定兩個值
[sasl] use-sasl = true min-encryption = 128 max-encryption = 256
min-encryption
和 max-encryption
變數控制伺服器要求的加密等級。若要完全停用加密,請將兩個值都設定為 0。若要啟用簡單的資料校驗和(即,防止篡改並在沒有加密的情況下保證資料完整性),請將兩個值都設定為 1。如果您希望允許(但不要求)加密,請將最小值設定為 0,最大值設定為某個位元長度。若要無條件要求加密,請將兩個值都設定為大於 1 的數字。在我們之前的範例中,我們要求用戶端至少執行 128 位元加密,但不超過 256 位元加密。