2010-06-30 83 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。

相关问题