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

时间:2010-06-30 08:43:44

标签: svn ant

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

9 个答案:

答案 0 :(得分:136)

您是否可以尝试使用命令行手动将svn checkout运行到您的网址https://yoururl/trunk C:\ant-1.8.1\Test_Checkout 并接受证书。

或者@AndrewSpear在下面说

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

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

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

答案 1 :(得分:48)

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

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

将其添加到您的svn命令参数中,您无需手动运行svn即可永久接受它。

答案 2 :(得分:11)

我不会用:

svn checkout

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

svn list https://your.repository.url

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

如果需要这样才能获得无法登录的用户的授权,请运行:

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

答案 3 :(得分:2)

如果在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。

答案 4 :(得分:1)

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;

答案 5 :(得分:1)

只需将服务器证书安装在客户端的受信任根证书容器中(如果已通过认证,则过期可能不起作用)。 有关详细信息,请参阅此类相似问题的帖子。

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

答案 6 :(得分:0)

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

--non-interactive

--trust-server-cert

答案 7 :(得分:0)

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

- 非交互式

- 信任服务器证书

答案 8 :(得分:0)

来自cmd run:SVN列表URL 您将获得3个选项(r)弹出,(a)ccept,(p)永久性。 输入p。 这解决了我的问题