TortoiseSVN Logo

使用 SASL 保护 Svnserve

什么是 SASL?

Cyrus Simple Authentication and Security Layer 是卡内基梅隆大学编写的开源软件。它为任何网络协议添加了通用的身份验证和加密功能,从 Subversion 1.5 及更高版本开始,svnserve 服务器和 TortoiseSVN 客户端都知道如何使用这个库。

有关可用选项的更完整讨论,您应该查看 Subversion 书籍中 使用 svnserve 与 SASL 章节。如果您只是在寻找一种在 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-encryptionmax-encryption 变量控制服务器要求的加密级别。要完全禁用加密,请将这两个值都设置为 0。要启用数据的简单校验和(即,防止篡改并保证数据完整性,但不进行加密),请将这两个值都设置为 1。如果您希望允许(但不要求)加密,请将最小值设置为 0,最大值设置为某个位长。要无条件地要求加密,请将这两个值都设置为大于 1 的数字。在我们之前的示例中,我们要求客户端至少进行 128 位加密,但不超过 256 位加密。