2016-06-09 23 views
-1

Ich bin neu in Ant Scripting. Ich versuche, mit einem Ant-Skript aus einem SVN-Repository auszuchecken. Hier finden Sie mein Ant-Skript unten."Fehler beim Validieren des Serverzertifikats" beim SVN-Checkout mit SvnAnt

Ich benutze Jenkins. Erstelle ein neues Projekt und setze invoke ant build ein, wenn der Pfad der ant-Datei angegeben ist (ant target is dist).

Ich bin in der Lage, Code von Root-Benutzer & in der Lage, es in Jenkinstools (Source Code Management) zu tun. Aber während von Jenkins Ausführen -> Ant-Skript zu bauen, es zeigt die folgenden Fehler:

Server certificate verification failed: certificate issued for a different hostname, issuer is not trusted

<project name="ProjectBuid" basedir="."> 

<description> 
    simple example build file 
</description> 
<property environment="env" /> 
<property name="svn.username" value="NANI" /> 
<property name="svn.password" value="Pandu" /> 
<property name="code.base.location" value="${env.WORKSPACE}" /> 
<property name="lib.home" value="..\lib" /> 
<property name="{svnPathParam}" value="https://Ip:port/Build/" /> 

<property name="jenkins-url" value="http://IP1" /> 
<property name="auth-username" value="root" /> 
<property name="auth-pwd" value="1231231231231" /> 
<property name="cli.prefix" value="AB_CLI_" /> 

<path id="mvn.classpath"> 
    <pathelement location="${lib.home}\maven-ant-tasks-2.1.3.jar" /> 
</path> 
<path id="svnant.classpath"> 
    <pathelement location="${lib.home}\svnant.jar" /> 
    <pathelement location="${lib.home}\svnClientAdapter.jar" /> 
    <pathelement location="${lib.home}\svnkit.jar" /> 
    <pathelement location="${lib.home}\ganymed.jar" /> 
    <pathelement location="${lib.home}\svnjavahl.jar" /> 
</path> 

<tstamp> 
    <format property="START_TIME" pattern="dd_MMM_yy_HH_mm_ss" /> 
</tstamp> 
<property name="timestamp" value="${START_TIME}" /> 
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask" 
    classpath="${lib.home}\xmltask.jar" /> 
<taskdef resource="net/sf/antcontrib/antcontrib.properties"> 
    <classpath> 
     <pathelement location="${lib.home}\ant-contrib-1.0b3.jar" /> 
    </classpath> 
</taskdef> 

<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" 
    classpathref="svnant.classpath" /> 
<svnSetting svnkit="false" javahl="false" id="svn.settings" 
    username="${svn.username}" password="${svn.password}" /> 

<target name="dist" description="checkout code"> 
    <mkdir dir="${code.base.location}/${timestamp}" /> 
    <exec dir="${code.base.location}/${timestamp}" executable="svn"> 
     <arg value="co" /> 
     <arg value="${svnPathParam}" /> 
     <arg value="." /> 
    </exec> 
    <!-- On executing above, error: Error validating server certificate for 
     'https://IP': [exec] - The certificate is not issued by a trusted authority. 
     Use the [exec] fingerprint to validate the certificate manually! [exec] - 
     The certificate hostname does not match. [exec] Certificate information: 
     [exec] - Hostname: IP [exec] - Valid: from XXXXXXX until yyyyyyyyyyyy [exec] 
     - Issuer: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [exec] - Fingerprint: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
     [exec] (R)eject, accept (t)emporarily or accept (p)ermanently? svn: OPTIONS 
     of 'https://Ip/build': Server certificate verification failed: certificate 
     issued for a different hostname, issuer is not trusted (https://IP) <!--Or 
     and also tried as below --> 
    <svn refid="svn.settings"> 
     <checkout url="${svnPathParam}" destPath="${code.base.location}\${timestamp}" /> 
    </svn> 
    <!-- On choosing above, error: svn: OPTIONS of 'https://Ip/build': Server 
     certificate verification failed: certificate issued for a different hostname, 
     issuer is not trusted (https://IP) [svn] <Checkout> failed. --> 
</target> 

+0

Versuchen Sie, auf die https-Site über ihre IP-Adresse anstelle des Hostnamens zuzugreifen? Aber ... könntest du die 'svn co' nicht einfach manuell als richtigen Benutzer ausführen und das Zertifikat dauerhaft akzeptieren? – Roberg

+0

Mögliches Duplikat von [SSL-Zertifikatsüberprüfung in Subversion umgehen] (http://stackoverflow.com/questions/9257323/bypass-ssl-certificate-validation-in-subversion) – Rao

+0

Wenn Sie Jenkins verwenden, haben Sie in Betracht gezogen, den Build zu konfigurieren Job, um die Kasse zu tun, anstatt es von ANT aus zu starten? Wenn Sie die gesamte lokale Konfiguration wünschen, können Sie mit der neuen Jenkins-Pipeline-Funktion die Job-Konfiguration in einer "Jenkins-Datei" beibehalten. Siehe: https://jenkins.io/solutions/pipeline/ –

Antwort

0

Die richtige und gültige Lösung ist gültiges Zertifikat zu verwenden, die den FQDN entspricht oder den Hostnamen Sie verwenden, um Zugriff auf den Remote-Server. Alle anderen Vorschläge sind nur Workarounds und sie sind irgendwie hässlich. Sie sollten die Zertifikatsprüfung nicht umgehen, da dies aus Sicherheitsgründen sehr schlecht ist.