2012-08-14 173 views
11

當我運行從詹金斯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

回答

15

很老的問題,但仍然很活躍。

如您所知,問題在於接受的證書緩存(以及用戶名/密碼緩存)是每個用戶,並且由於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

6

我終於設法解決了這個問題!我所做的只是放在詹金斯腳本:

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

這解決了它!因爲回聲模擬手動輸入以永久接受證書。

根本原因是Windows服務用戶下運行詹金斯shell腳本的事實 - 因此使用用戶配置文件緩存在不同的地方(在%USERPROFILE%\AppData\Roaming\Subversion\C:\Windows\System32\config\systemprofile\AppData\Roaming\Subversion代替)

0

也許,證書頒發給不同主機名(不是xxx,但是像xxx.yourcompany.com)。如果是,那麼用這個主機名進行乾淨的檢查。

0

echo p | svn commands

在詹金斯Windows批處理命令提示符偉大的工作。這樣做一次將永久接受生成框中Jenkins用戶的證書。

0

通過詹金斯在奴隸上運行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

0

這似乎是一個可怕的答案,但用盡了其他的後向證書添加到您的Windows機器,它沒有工作對於我來說由於其他問題,我選擇改變SVN服務器的路線來不使用SSL。

這只是一個選項,因爲我只是設置了這個服務器,它在一個完全內部的網絡上,但它完全消除了這個問題。我耗盡了其他選擇和時間。

我也只是建議這個incase有人不知道它甚至是一個選項。無論服務器暴露如何,使用SSL都會讓我感覺好多了。

0

與Jenkins和Window 7有相同的問題。 我解決了這個問題,進入服務並選擇Jenkins並轉到登錄並輸入管理憑據並重新啓動jenkins服務。

希望這可以解決您的問題。

相關問題