运行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
答案 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)
只需将服务器证书安装在客户端的受信任根证书容器中(如果已通过认证,则过期可能不起作用)。 有关详细信息,请参阅此类相似问题的帖子。
答案 6 :(得分:0)
其他答案对我不起作用。我正在尝试让命令行在Jenkins中运行。 您只需要以下命令行参数:
--non-interactive
--trust-server-cert
答案 7 :(得分:0)
在命令行工作期间。我在构建完成后使用Ant来提交工件。遇到同样的问题......手动除了证书不起作用(詹金斯很有趣)。将这些选项添加到您的svn命令:
- 非交互式
- 信任服务器证书
答案 8 :(得分:0)
来自cmd run:SVN列表URL 您将获得3个选项(r)弹出,(a)ccept,(p)永久性。 输入p。 这解决了我的问题