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