SVN加密密码存储

Posted

技术标签:

【中文标题】SVN加密密码存储【英文标题】:SVN encrypted password store 【发布时间】:2011-04-18 23:30:24 【问题描述】:

我在 Ubuntu 机器上安装了 SVN,但我无法理解。

每当我从终端结帐时,我都会收到有关保存未加密密码的错误:

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <[...]> Subversion Repository

can only be stored to disk
unencrypted!  You are advised to
configure your system so that
Subversion can store passwords
encrypted, if possible.  See the
documentation for details.

You can avoid future appearances of
this warning by setting the value of
the 'store-plaintext-passwords' option
to either 'yes' or 'no' in
'/home/[...]/.subversion/servers'.
-----------------------------------------------------------------------

我看了一会儿,但找不到任何有用的东西。我发现一个主题说这是客户端问题,而不是服务器问题,但我仍然不相信。

上面写着“配置你的系统”;这到底是什么意思?服务器还是客户端?如果我是服务器,我能做些什么吗?除了隐藏警告(就像它说的那样)......

谢谢!

【问题讨论】:

How to remove warning about storing unencrypted password after commiting file in svn的可能重复 该问题是关于如果您不想加密密码,如何隐藏警告。这个问题是关于如何配置系统以正确加密密码。 【参考方案1】:

这是一个客户端问题。它警告您用于不同服务器的凭据以纯文本形式存储。您可以隐藏该警告或使用加密存储来缓存密码。

见: http://blogs.collab.net/subversion/2009/07/subversion-16-security-improvements

【讨论】:

特色的加密存储是 GNOME Keyring 或 Kwallet,但由于我没有在我的服务器上使用任何桌面界面,我猜加密是不可能的。对吗? 在第一条评论中你可以看到有一个使用命令行的选项,不确定它是如何工作的,但似乎可行。 我不敢相信 svn 不提供像 htpasswd 或类似的散列密码。 @sims 如果您想验证密码的正确性,散列是很好的选择。客户端即将向服务器发送密码,因此散列是不够的。您必须以双向方式存储它。 无需重新编译即可获得,基于ubuntuforums.org/showthread.php?t=1348567。只需将其设置为 ~/.subversion/config [auth] password-stores = gnome-keyring【参考方案2】:

我将凭据存储在加密磁盘上。 (虽然,在安装 encfs 时,凭据仍然是我帐户的纯文本)

$ ls -nl ~/.subversion/
total 20K
-rw-r--r-- 1 1000 1000 4.2K 2009-07-10 13:00 README.txt
lrwxrwxrwx 1 1000 1000   31 2009-10-14 14:31 auth -> ~/crypt/subversion/auth/
-rw-r--r-- 1 1000 1000 5.7K 2009-07-10 13:00 config
-rw-r--r-- 1 1000 1000 3.6K 2009-07-10 13:00 servers

使用 git-svn 意味着我需要的凭据少得多, 所以根本不保存它们可能不会太麻烦。

【讨论】:

【参考方案3】:

通过加密密码,由于操作系统文件权限,您将无法实现不可否认(其他用户可以像您一样使用您的哈希)。但是,大多数公司都使用其域密码或某种形式的 SSO 密码进行颠覆设置。通过加密密码,您至少可以屏蔽某人访问用户的其他帐户。

我仍然会担心加密强度。如果颠覆密码与其他重要帐号相关联,可能会有人测试加密强度破解密码。

最好的办法是设置 subversion 客户端以关闭存储的密码并强制懒惰的开发者每次都进行身份验证。

【讨论】:

后一种方案是否“最好”取决于其他因素。如果开发人员面临繁重的提交/更新过程,开始较少使用 SVN,结果与其他人同步的粒度变得更粗糙怎么办?如果他们开始使用陪审团方法将密码存储在其他地方并以不安全的方式自动执行身份验证过程怎么办?

以上是关于SVN加密密码存储的主要内容,如果未能解决你的问题,请参考以下文章

SVN如何修改用户密码?

SVN over HTTPS:如何隐藏或加密URL?

双向加密:我需要存储可以检索的密码

双向加密:我需要存储可以检索的密码

Shiro学习——密码的加密解密

Shiro学习——密码的加密解密