2010-06-30 82 views
53

運行ANT腳本的目標時出現錯誤。錯誤消息說「服務器證書驗證失敗」。請幫助如何消除此問題。我在Windows XP中工作。服務器證書驗證失敗:發佈者不可信

C:\apache-ant-1.8.1>ant checkout 
Buildfile: C:\Program Files\Java\apache-ant-1.8.1\build.xml 

checkout: 
[svn] Using command line interface 
Svn : Checking out a working copy from a repository : 
co -r HEAD https://col.../trunk C:\ant-1.8.1\Test_Checkout 
--username 69 --password *******--non-interactive 
svn: PROPFIND request failed on '/svn/asia-pac-financials/trunk' 
svn: PROPFIND of '/sv.../trunk': 
Server certificate verification failed: 
issuer is not trusted (https://col....com) 

BUILD FAILED 
C:\apache-ant-1.8.1\build.xml:16: Can't checkout 

Total time: 3 seconds 

回答

115

可以嘗試使用命令行 一次手動運行svn checkout到您的網址https://yoururl/trunk C:\ant-1.8.1\Test_Checkout並接受證書。

或者像@AndrewSpear說下面

而不是手動檢查出從終端(蘋果機)/命令行(運)運行svn list https://your.repository.url拿到選項接受證書永久

SVN會問你確認。永久接受它。

之後,這應該適用於螞蟻腳本的後續請求。

+0

這工作正常...現在問題得到解決。非常感謝。 – Shaun

+0

我在這裏也爲PHP添加了一個示例腳本:http://www.php.net/manual/en/function.svn-auth-set-parameter.php#104300針對相同的問題。 – powtac

+18

而不是手動檢查我只是從終端(Mac)/命令行(Win)運行'svn list https:// your.repository.url'以獲得永久接受證書的選項。 – Andrew

43

對所有可用選項運行「svn help commit」。你會看到,有一個選項負責接受服務器證書:

--trust-server-cert:接受未知的SSL服務器證書,而不必 提示(但只有--non-interactive

將它添加到你的svn命令參數,你會不會需要手動運行svn以永久接受它。

+0

這對我很有用;)thx – veritas

+3

這是自動化腳本的最佳解決方案,它通常不會具有接受答案中概述的步驟的奢華。需要指出的是,盲目接受SSL證書基本上破壞了SSL的全部目的,因此可能會使您受到MitM攻擊。 – ken

+0

如何使用maven scm插件添加此選項? – Kayser

2
string cmdArguments = [email protected]"/k svn log --trust-server-cert --non-interactive ""{servidor}"" --username alex --password alex -r {numeroRevisao}"; 
ProcessStartInfo cmd = new ProcessStartInfo("cmd.exe", cmdArguments); 

cmd.CreateNoWindow = true; 
cmd.RedirectStandardOutput = true; 
cmd.RedirectStandardError = true; 
cmd.WindowStyle = ProcessWindowStyle.Hidden; 
cmd.UseShellExecute = false; 

Process reg = Process.Start(cmd); 
string output = ""; 

using (System.IO.StreamReader myOutput = reg.StandardOutput) 
{ 
    output += myOutput.ReadToEnd(); 
} 
using (System.IO.StreamReader myError = reg.StandardError) 
{ 
    output += myError.ReadToEnd(); 
} 

return output; 
+1

你能解釋你的代碼如何解決他的問題嗎?此外,您可能想要改進佈局(白色間距)。 – ShiDoiSi

9

我不會用:

svn checkout 

只是授權服務器認證,我寧願用:

svn list https://your.repository.url 

它會問你做認證爲好。

如果這是需要得到授權,無法登錄用戶,運行:

sudo -u username svn list https://your.repository.url 
0

其他的答案沒有爲我工作。我試圖讓詹金斯的命令行工作。 所有你需要的是下面的命令行參數:

--non-interactive

--trust-server-cert

0

只需安裝客戶端的受信任的根證書容器中的服務器證書(如果證明它過期,則可能無法正常工作)。 欲瞭解更多詳情,請參閱此文章的類似問題。

https://stackoverflow.com/a/21238125/3215589

0

命令行工作。我在構建完成後使用Ant來提交工件。遇到同樣的問題...手工除了證書沒有工作(詹金斯很滑稽)。這些選項添加到你的svn命令:

--non交互式

--trust服務器證書從CMD運行

1

:SVN列表網址 您將提供3個選項(R)彈出,(a)接受,(p)永遠。 輸入p。 對我來說這個已解決的問題

1

如果您在Windows Server上使用Jenkins的svn,則必須使用相同的Jenkins的Windows服務用戶接受https證書。
因此,如果您詹金斯服務爲 「MYSERVER \ Administrator的」 運行時,必須將所有其他人之前使用此命令,只有一門課程的時間:

的RunAs /用戶:MYSERVER \管理員「SVN --username用戶 - -password密碼列表https://myserver/svn/REPO

SVN詢問您是否接受在正確的道路證書和存儲。

在此之後,您將可以直接在Windows批處理命令步驟中使用jenkins作業中的svn。

相關問題