我们如何在 Apache-on-Linux 和运行 Windows 和 OS X 的客户端计算机之间加密针对 Windows 域的身份验证?

我们如何在 Apache-on-Linux 和运行 Windows 和 OS X 的客户端计算机之间加密针对 Windows 域的身份验证?

设置:我们有一台机器(1型) 通过 Apache 为运行 Windows 7 的客户端计算机提供 Subversion 服务 (CLI1)、OS X (CLI2),以及可能一些其他运行 Windows XP 的客户端(CLI3)。虽然我们提供的材料安全性不高,但用于访问的用户名和密码在其他地方使用,因此我们希望对身份验证部分保持加密。

SRV1:尚未加入我们的域(域1)。RedHat Linux 5.5、Apache 2.n、Subversion 1.6.12。我们决定通过 Apache 运行 Subversion,mod_dav_svn以实现连接灵活性;Subversion 手册推荐使用这种方法来提高安全性,而这对于我们的用户来说是必需的。

我们的团队:平庸的脚本编写者(多发性硬化症)、Windows 系统管理员(WS) 和 Linux 系统管理员 (LS)。

LS 没有使用 Active Directory 的经验,也未与 Windows 服务器进行过多通信。WS 没有太多使用 Apache 身份验证的经验。MS 有一些历史知识,并且对基本的 Web 协议有所了解。

排除的方法:

1)基本身份验证以明文形式传输用户名和密码。

2)摘要认证似乎从未流行过。

3) SSL 可用于加密身份验证,但也会使服务器速度变慢。早期测试表明传输速度减慢了 15 倍。我们实际上只需要加密用户名和密码。通常,这不是问题,但我们的用户可能会将大文件推送到 subversion 或从 subversion 推送出去(无论是否合适,subversion 都是政治授权的)。

4)我们当然可以为此任务分配单独的用户名和密码,但我们正尝试摆脱这种做法。

我们从哪里开始呢?我们最终将要针对 DOMAIN1 中包含 DOMAIN2 中的部分成员的组进行身份验证,但那是另一回事了。

答案1

您可以使用 Active Directory 作为 Kerberos KDC 并使用HTTP SPNEGO 身份验证(或 Kerberos,如果不可用)。这将使用 Kerberos 通过 HTTP 协商身份验证(因此您的密码将被加密,等等)。Active Directory 可以很好地与 MIT Kerberos 5 客户端库(在 Linux 和 OSX 上可用)配合使用,当然 Active Directory 也可以与 Windows 客户端配合使用。缺点是它需要在客户端进行额外的设置(浏览器或命令行客户端,我认为svn可以使用 MIT Kerberos 5)。

或者,如果您信任 Apache Httpd 管理员,则可以从那里使用 Active Directory 作为 LDAP 服务器。我认为使用摘要式身份验证无法做到这一点(它更复杂,因为您需要在 LDAP 端将哈希设置为特定格式),因此您需要 Basic+SSL。

我对你的 SSL 减慢速度 15 倍感到惊讶,即使是处理大文件也是如此。SSL/TLS 握手总是有开销,但此后开销应该很小(事实上,处理较大的文件时几乎可以忽略不计)。

相关内容