TortoiseSVN Logo

使用 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 文件中定义的值相同,用户名正是您期望的。请注意,领域不允许包含空格字符。

您可以使用 sasldblistusers2 程序列出存储在数据库中的用户名。

SASL 加密

要启用或禁用不同级别的加密,您可以在存储库的 svnserve.conf 文件中设置两个值

[sasl]
use-sasl = true
min-encryption = 128
max-encryption = 256

min-encryptionmax-encryption 变量控制服务器要求的加密级别。要完全禁用加密,请将这两个值都设置为 0。要启用数据的简单校验和(即防止篡改并保证数据完整性,但没有加密),请将这两个值都设置为 1。如果您希望允许(但不强制)加密,请将最小值设置为 0,并将最大值设置为某个位长。要无条件地要求加密,请将这两个值都设置为大于 1 的数字。在我们之前的示例中,我们要求客户端至少进行 128 位加密,但最多不超过 256 位加密。