簡體   English   中英

服務器證書驗證失敗:頒發者不受信任

[英]Server certificate verification failed: issuer is not trusted

運行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

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

或者@AndrewSpear在下面說

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

svn會要求你確認。 永久地接受它。

之后,這應該適用於來自ant腳本的后續請求。

對所有可用選項運行“svn help commit”。 您將看到有一個選項負責接受服務器證書:

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

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

我不會用:

svn checkout

只是為了授權服務器身份驗證,我寧願使用:

svn list https://your.repository.url

它也會要求你進行身份驗證。

如果需要這樣才能獲得無法登錄的用戶的授權,請運行:

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

如果在Windows Server上使用帶有Jenkins的svn,則必須使用相同的Jenkins的Windows服務用戶接受https證書。
因此,如果您的Jenkins服務以“MYSERVER \\ Administrator”運行,則必須在所有其他服務之前使用此命令,當然只有一次:

runas / user:MYSERVER \\ Administrator“svn --username user --password password list https:// myserver / svn / REPO

svn要求您接受證書並將其存儲在正確的路徑中

在此之后,您將能夠在Windows批處理命令步驟中直接在jenkins作業中使用svn。

string cmdArguments = $@"/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;

只需將服務器證書安裝在客戶端的受信任根證書容器中(如果經過認證,則過期可能不起作用)。 有關詳細信息,請參閱此類相似問題的帖子。

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

其他答案對我不起作用。 我正在嘗試讓命令行在Jenkins中運行。 您只需要以下命令行參數:

--non-interactive

--trust-server-cert

在命令行工作期間。 我在構建完成后使用Ant來提交工件。 遇到同樣的問題......手動除了證書不起作用(詹金斯很有趣)。 將這些選項添加到您的svn命令:

--non交互式

--trust服務器證書

從cmd run:SVN List URL你將獲得3個選項(r)彈出,(a)ccept,(p)永久性。 輸入p。 這個解決了我的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM