SVN命令行失败,因为服务器证书不匹配

问题描述:

当我运行从詹金斯svn命令行shell我得到这个错误:SVN命令行失败,因为服务器证书不匹配

D:\Jenkins\jobs\Merge Trunk to Stable\workspace\stable>svn up --trust-server-cert --non-interactive 
Updating '.': 
svn: E175002: Unable to connect to a repository at URL 'https://xxx/stable' 
svn: E175002: OPTIONS of 'https://xxx/stable': Server certificate verification failed: certificate issued for a different hostname, issuer is not trusted (https://xxx) 

但是当我运行命令行CMD窗口相同它是OK:

D:\Jenkins\jobs\Merge Trunk to Stable\workspace\stable>svn up 
Updating '.': 
At revision 1797. 

D:\Jenkins\jobs\Merge Trunk to Stable\workspace\stable>svn up --trust-server-cert --non-interactive 
Updating '.': 
At revision 1797. 

不知道如何解决这个问题?

+0

您是否需要为该服务器添加服务器指纹的某个位置? – fduff 2012-08-14 11:48:18

+0

不是我所知道的。我实际上并不了解这个问题......我知道服务器证书名称不匹配。这让我没有问题。 – 2012-08-14 11:49:52

+0

我想到了在Tortoise/Network/Subversion服务器文件中的东西;那里可能会有一个缺失的设置,但这只是一个猜测。 – fduff 2012-08-14 12:15:08

很老的问题,但仍然很活跃。

如您所知,问题在于接受的证书缓存(以及用户名/密码缓存)是每个用户,并且由于Jenkins作为不同的用户(很可能是SYSTEM)运行,所以它不知道的普通用户缓存。

不是所有的SVN客户端都会让你在那里做“回声p”的事情(它对我来说不起作用),而--trust-server-cert显然在这种情况下也不起作用。

对我来说有效的是open a console window as SYSTEM,并在那里做交互式acceptcertificate-login-password跳舞。

由于所有这些都被缓存,您只需要这样做一次,从那时起,所有的svn up和类似的请求都可以使用。

+1

plusone - 三年后,仍然是一个问题,你的回答救了我!谢谢。 – 2016-06-01 19:19:17

我终于设法解决了这个问题!我所做的只是放在詹金斯脚本:

echo p | svn up --username <usr> --password <pwrd> 

这解决了它!因为回声模拟手动输入以永久接受证书。

根本原因是Windows服务用户下运行詹金斯shell脚本的事实 - 因此使用用户配置文件缓存在不同的地方(在%USERPROFILE%\AppData\Roaming\Subversion\C:\Windows\System32\config\systemprofile\AppData\Roaming\Subversion代替)

也许,证书颁发给不同主机名(不是xxx,但是像xxx.yourcompany.com)。如果是,那么用这个主机名进行干净的检查。

echo p | svn commands

在詹金斯Windows批处理命令提示符伟大的工作。这样做一次将永久接受生成框中Jenkins用户的证书。

通过詹金斯在奴隶上运行Svn命令给我带来了困难。我做了以下内容:

如果您在UNIX那么请点击此链接:http://www.microhowto.info/howto/configure_subversion_to_trust_a_given_ssl_certificate.html

如果您使用的是Windows然后执行:

cd %APPDATA%\Subversion\ 

通过删除然后编辑server文件,在该目录#ssl-authority-files元素中签名并更新存储您的ssl证书文件的路径。

如果您喜欢存储您的凭证,请更改以下内容。

store-passwords = yes 
store-ssl-client-cert-pp = yes 

一旦做到这一点,你也需要通过以下Add the Cert to the Trusted Root CA Store

这似乎是一个可怕的答案,但用尽了其他的后向证书添加到您的Windows机器,它没有工作对于我来说由于其他问题,我选择改变SVN服务器的路线来不使用SSL。

这只是一个选项,因为我只是设置了这个服务器,它在一个完全内部的网络上,但它完全消除了这个问题。我耗尽了其他选择和时间。

我也只是建议这个incase有人不知道它甚至是一个选项。无论服务器暴露如何,使用SSL都会让我感觉好多了。

与Jenkins和Window 7有相同的问题。 我解决了这个问题,进入服务并选择Jenkins并转到登录并输入管理凭据并重新启动jenkins服务。

希望这可以解决您的问题。