服务器证书验证失败:发行者不受信任


69

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

Answers:


149

您可以尝试使用命令行svn checkout手动运行一次到URLhttps://yoururl/trunk C:\ant-1.8.1\Test_Checkout并接受证书吗?

或者如下面的@AndrewSpear所说

无需svn list https://your.repository.url从终端(Mac)/命令行(Win)手动签出以获取永久接受证书的选项

svn会要求您确认。永久接受。

之后,这应该适用于来自ant脚本的后续请求。


我在这里还为PHP添加了示例脚本:php.net/manual/en/function.svn-auth-set-parameter.php#104300,用于解决同一问题。
powtac

29
无需手动签出,而是svn list https://your.repository.url从终端(Mac)/命令行(Win)运行,以获得永久接受证书的选项。
安德鲁(Andrew)

1
在OS XI上,需要在svn list命令中使用sudo,否则选择(p)ermanent似乎无效。
洛克

我将svn://repos.server.url替换为https://repos.server.url,仅比要求我接受SSL证书的情况要多。
Stefan 2014年

52

对所有可用选项运行“ svn help commit”。您将看到有一个选项负责接受服务器证书:

--trust-server-cert :在不提示的情况下接受未知的SSL服务器证书(但仅限于 --non-interactive

将其添加到svn命令参数中,您将不需要手动运行svn来永久接受它。


3
这是自动化脚本的最佳解决方案,通常不会接受公认的答案中概述的步骤。应该注意的是,盲目接受SSL证书基本上会破坏SSL的全部目的,因此可能使您容易受到MitM攻击。
2012年

29
如果服务器向您发送的证书的主机名值与实际服务器的主机名不同,则此方法不起作用
Andrey Sboev 2012年

1
我和Andrey有同样的问题:如果名称不匹配,验证仍然会失败。
TimBüthe2014年

1
今晚在我们的SVN服务器上更新了我的证书,并获得了此证书。该证书是受浏览器信任的。为何SVN客户突然感到惊讶?用你的把戏解决了我的问题。
TekiusFanatikus

1
--trust-server-cert现在已弃用,无法像以前那样工作。等效参数为--trust-server-cert-failures=unknown-ca,cn-mismatch,expired,not-yet-valid,other。参见svnbook.red-bean.com/en/1.7/svn.ref.svn.c.commit.html
转让

13

我不会使用:

svn checkout

只是为了授权服务器身份验证,我宁愿使用:

svn list https://your.repository.url

这也会要求您进行身份验证。

如果需要这样做以授权无法登录的用户,请运行:

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

这成功地帮助我在El Capitan上安装了svn。
Coolio2654 '20

3

如果在Windows Server上将svn与Jenkins一起使用,则必须使用同一Jenkins的Windows服务用户接受https证书。
因此,如果您的Jenkins服务以“ MYSERVER \ Administrator”身份运行,那么您必须在所有其他命令之前使用此命令,当然只有一次:

runas / user:MYSERVER \ Administrator“ svn --username用户--password密码列表https:// myserver / svn / REPO

svn要求您接受证书并将其存储在正确的路径中

之后,您将可以在Windows批处理命令步骤中直接在jenkins作业中使用svn。


1

其他答案对我不起作用。我正在尝试让Jenkins使用命令行。您只需要以下命令行参数:

--non-interactive

--trust-server-cert



0

在命令行工作期间。构建完成后,我正在使用Ant来提交工件。遇到过同样的问题...手动操作,但证书无效(詹金斯很有趣)。将这些选项添加到您的svn命令中:

-非互动

--trust-server-cert


0

从cmd运行:SVN列表URL,将为您提供3个选项:(r)弹出,(a)接受,(p)永久。输入p。为我解决了这个问题


0
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;

2
您能解释一下您的代码如何解决他的问题吗?另外,您可能需要稍微改善布局(白色间距)。
Volker Stolz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.