Xcode 4在需要客户端证书的情况下卡在“正在检出”

5
我正在尝试让Xcode 4与我的svn仓库配合工作。我输入svn地址,它说可以到达,但是当我尝试检出时,它会显示“服务器 'svn.testbedapp.com' 需要客户端证书”(没有提供提供证书的选项),然后它会无限期地显示“检查 'ProjectName'”,并带有旋转的圆圈。
有什么想法如何提供证书或使其检出任何内容吗?
3个回答

12

这是一个已知的问题。

打开终端,输入以下命令:

svn ls <你的代码库地址>

确认证书,检查登录/密码。 完成后,在Xcode中就能正常使用代码库了。


我已经这样做了,它要求我提供证书和登录/密码,我提供了,它成功地给了我“ls”列表,但当我尝试在XCode中检出时,它仍然停留在“正在检查“我的项目””,并且永远不会得到任何文件... - brucem
有趣的是,我成功地通过这个绝妙的提示在XCode 3.2.6中停止了要求客户端证书:http://sgi.posterous.com/sslv3-alert-handshake-failure-with-svn-client,但是在XCode 4中,它似乎仍然需要证书,但没有提供位置的选项 - 我猜XCode 4使用自己内置的svn,你无法自行配置? - brucem

1

您可以将证书文件名放入SVN配置文件中

 ~/.subversion/servers

[global] 部分中添加一行(使用完整路径 - 不要使用相对路径)。
ssl-client-cert-file = /path/to/your/certificate.p12

你可以选择添加

ssl-client-cert-password = yourpassphrase 
store-passwords = yes
store-ssl-client-cert-pp = yes**

0

回答原问题:

服务器“foo.example.com”需要客户端证书。

翻译:Xcode 在您的钥匙串中找不到 SSL 客户端证书,证书无效,或者如果有多个证书,Xcode 不知道使用哪一个。

在您的钥匙串中安装证书:在 Finder 中打开包含客户端证书的文件(通常是 .p12 文件)。单击添加,然后输入密码以解密 .p12 文件。如果您有相应的根证书(通常是 .pem 文件),也要导入它,并在提示时点击“始终信任”。

确保证书有效:在钥匙串访问中,选择客户端证书,查找绿色勾号和“此证书有效”的字样。

  • 如果您看到“此证书由未知机构签名”,请安装相应的根证书。
  • 如果您看到“此证书由不受信任的颁发者签名”,请查找“颁发者”所在的位置,找到相应名称的根证书,并将根证书标记为受信任(至少对于 X.509 基本策略)。
  • 如果您看到“此证书已过期”,请删除它并获取新证书。

将 URL 与特定证书关联: 您需要一个身份首选项。Xcode 不能做到这一点,但是 Keychain Access 和 Safari 都可以。在 Keychain Access 中,选择客户端证书并选择文件菜单 > 新建身份首选项…。输入存储库 URL(例如 https://foo.example.com/path/to/repository)并单击添加。

或者:在 Safari 中,转到您的存储库 URL。如果安装了多个证书,Safari 将提示“网站“foo.example.com”需要客户端证书”,并显示证书列表。选择您在第一步中安装的证书。


为了让一切正常工作,您还需要解决这两个常见错误:

客户端证书文件名:认证领域:https://foo.example.com:443

翻译:Subversion 在磁盘上找不到您的 SSL 客户端证书。

Xcode 使用 Keychain,而 Subversion 本身(从 v1.4 开始)也使用 Keychain 存储密码。但是对于证书,Subversion 必须指向磁盘上的文件。

1)在您喜欢的文本编辑器中打开~/.subversion/servers。在底部添加以下行:

ssl-client-cert-file = /path/to/first.last.p12

其中的值是您客户端证书在PKCS#12格式中的路径。

svn:'https://foo.example.com/path/to/repository'的OPTIONS:SSL握手失败,请求客户端证书:SSL错误:sslv3警报握手失败

翻译:Subversion无法找到解密SSL客户端证书的密码。

请参见上面的说明。

将.p12密码保存在Keychain中:在终端中输入

svn ls https://foo.example.com/path/to/repository
  • 在提示时,输入.p12文件的密码。这将作为应用程序密码存储在您的钥匙串中。
  • 在提示时,输入您的Mac管理员密码。
  • 在提示时,输入您的服务器凭据。这也将作为应用程序密码存储在您的钥匙串中。

此时,您应该在终端中看到您的代码库的内容显示出来。

注意:如果您使用Black Pixel的Versions,至少v1.2.2似乎无法使用Keychain来管理密码,因此您还需要在~/.subversion/servers中添加以下行:

ssl-client-cert-password = yourpassword

当你的密码在明文中时。(显然不安全,所以除非你必须这样做,否则不要这样做。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接