我正在尝试让 Subversion 1.8.5 + SASL2 在 Windows 7 或 Server 2008 上运行,其中一个是 64 位的。我只想使用 DIGEST-MD5 从 SASL 进行本地加密。我不需要 LDAP、AD、SSPI 或任何其他身份验证方法。
我已经为此苦苦挣扎了两天,因此记录我尝试过的所有不同事物并不是寻求帮助的真正有价值的方式。
我发现的所有链接、教程等似乎都表明这在 XP 机器、Server 2003 或 32 位机器上相当容易。但我的环境似乎偏离了足以让我头疼的程度。
我的结论是 svnserve/sasl 库无法读取 sasldb 文件。这是我所做的,以及我是如何得出这个结论的。
我按照设置服务器一章中的说明进行操作。这也很有帮助: http ://tortoisesvn.net/sasl_howto.html (而且很多都是在整个网络上重复的)
(很多文档都说添加注册表“键”SearchPath 和 ConfFile,但 CollabNet 和 Cyrus 安装程序在这些键下添加了“字符串”......这可能应该在文档中更正。另外,我知道 Wow6432Node对于 64 位世界中的 32 位应用程序)
我确实让整个设置在 Linux (Ubuntu) 中工作。所以我知道如何设置 DIGEST-MD5 加密并添加用户。(我需要Windows的原因是我们也在机器上做Windows构建,所以需要一个Windows环境)
我正在使用 CollabNet,Win32 构建(但我也尝试了 x64 构建)。它带有已经存在的 Sasl 库,但没有任何可执行文件来管理 sasldb。所以我还从 sourceforge (cyrus-sasl-2.1.26-static-x86) 下载了 Sasl 的二进制文件,这样我就可以创建和管理 sasldb 文件。
足够的背景。我的问题是我收到错误:
SASL(-13):未找到用户
用户在数据库文件中。我把它放在那里,并且可以使用 sasldblistusers2 命令查看它。
有趣的是,它们在 windows 版本中被列出了 3 次:
我@TheRealm:用户密码
我@TheRealm:cmusaslsecretOTP
我@TheRealm:cmusaslsecretSRP
但它只列出一次,第一行,在我在 linux 机器上创建的 sasldb 中。
我最初是从命令行运行 svnserve。并且会直到我让事情正常工作,并准备将其作为服务安装。
可悲的是,执行似乎进入 libSasl 后,没有报告一条错误消息。
这是我推测的流程:
客户端 -> Svnserve -> libSasl -> SearchPath 注册表 -> Libs -> ConfFile 注册表 -> Sasldb 文件
因此,我系统地破坏了上述路径中的一些设置,以查看错误是什么。
我将 subsersion.conf 更改为仅使用密码文件。一切都很好。
我删除了 libSasl - 显然服务器甚至没有启动。
我更改了 SearchPath - 它失败了“svn 无法获取...的列表” 好的。
我改回来了,“找不到用户”。好的
我删除了 svn.conf 文件。得到“svn 无法获取列表...” 好的。
我把它放回去,并更改了 ConfFile 设置。同样的错误:“svn 无法获取列表...”
我损坏了 svn.conf 中的条目“mech_list:DIGEST-MD5”。同样的错误:“svn 无法获取列表...”
因此,当一切设置正确时,我会收到“找不到用户”错误。
如果我删除或更改“sasldb_path:”条目,我仍然会收到“找不到用户”错误。
我的结论是 server/sasl 库正在查找所有步骤以获取 svn.conf 文件,甚至从中读取“mech_list:”行,因此它必须能够找到我指定的 sasldb 文件的名称.
但是由于某种原因,它实际上无法打开文件,或者如果可以,它找不到我添加的名称。
我移动了文件,并更改了它的权限。没有不同。
我什至将 sasldb 文件从 linux 机器复制到 windows 机器(因此它试图读取其中只有一个名称的文件,我知道它适用于 linux 安装)。但这并没有什么不同。
有人有建议吗?
有没有人让它在 64 位系统中工作?
提前感谢您的帮助。
-斯科特