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.
不知道如何解决这个问题?
很老的问题,但仍然很活跃。
如您所知,问题在于接受的证书缓存(以及用户名/密码缓存)是每个用户,并且由于Jenkins作为不同的用户(很可能是SYSTEM)运行,所以它不知道的普通用户缓存。
不是所有的SVN客户端都会让你在那里做“回声p”的事情(它对我来说不起作用),而--trust-server-cert
显然在这种情况下也不起作用。
对我来说有效的是open a console window as SYSTEM,并在那里做交互式acceptcertificate-login-password跳舞。
由于所有这些都被缓存,您只需要这样做一次,从那时起,所有的svn up
和类似的请求都可以使用。
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服务。
希望这可以解决您的问题。
您是否需要为该服务器添加服务器指纹的某个位置? – fduff 2012-08-14 11:48:18
不是我所知道的。我实际上并不了解这个问题......我知道服务器证书名称不匹配。这让我没有问题。 – 2012-08-14 11:49:52
我想到了在Tortoise/Network/Subversion服务器文件中的东西;那里可能会有一个缺失的设置,但这只是一个猜测。 – fduff 2012-08-14 12:15:08