2010-06-30 17 views
53

Estoy obteniendo el error por debajo al ejecutar un destino de script ANT. Mensaje de error que dice que "la verificación del certificado del servidor ha fallado". Por favor, ayuda a eliminar este problema. Estoy trabajando en Windows XP.Error de verificación del certificado del servidor: el emisor no es de confianza

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 

Respuesta

115

se intenta ejecutar manualmente una vez svn checkout a su URL https://yoururl/trunk C:\ant-1.8.1\Test_Checkout mediante línea de comandos y aceptar el certificado.

O como dice a continuación @AndrewSpear

En lugar de retirar manualmente ejecutar svn list https://your.repository.url de la Terminal (Mac)/línea de comandos (Win) para obtener la opción de aceptar el certificado de forma permanente

SVN le preguntará por confirmación. acéptalo permanentemente

Después de esto, esto debería funcionar para las solicitudes posteriores de script ant.

+0

Esto funciona bien ... Ahora el problema está resuelto. Muchas gracias. – Shaun

+0

Agregué también un script de ejemplo para PHP aquí: http://www.php.net/manual/en/function.svn-auth-set-parameter.php#104300 para el mismo problema. – powtac

+18

En lugar de verificar manualmente, simplemente ejecuto 'svn list https: // your.repository.url' desde Terminal (Mac)/Command Line (Win) para obtener la opción de aceptar el certificado de forma permanente. – Andrew

43

Ejecute "svn help commit" a todas las opciones disponibles. Verá que hay una opción responsable de aceptar certificados de servidor:

--trust-server-cert: aceptar certificados de servidor SSL que no conoce sin que provocó (pero sólo con --non-interactive)

añadirlo a su argumentos del comando svn y no será necesario ejecutar svn manualmente para aceptarlo permanentemente.

+0

esto funcionó para mí;) thx – veritas

+3

Esta es la mejor solución para scripts automatizados, que normalmente no tendrán el lujo de los pasos descritos en la respuesta aceptada. Sin embargo, debe tenerse en cuenta que la aceptación ciega de certificados SSL básicamente frustra el propósito completo de SSL y, por lo tanto, puede abrirlo a los ataques de MitM. – ken

+0

¿Cómo puedo agregar esta opción si utilizo el plugin 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

¿Puede explicarme cómo su código resuelve su problema? Además, es posible que desee mejorar un poco el diseño (espacio en blanco). – ShiDoiSi

9

yo no usaría:

svn checkout 

autoriza sólo para la autenticación del servidor, yo prefiero usar:

svn list https://your.repository.url 

que le pedirá que hacer la autenticación también.

Si esto es necesario para obtener autorización para un usuario que no puede iniciar sesión, ejecute:

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

Las otras respuestas no funcionan para mí. Intento que la línea de comando funcione en Jenkins. Todo lo que necesita son los siguientes argumentos de línea de comando:

--non-interactive

--trust-server-cert

0

sólo tiene que instalar el certificado de servidor en el contenedor de certificados raíz de confianza del cliente (si está caducado certificado puede no funcionar). Para más detalles, consulte esta publicación de preguntas similares.

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

0

durante la línea de comandos funciona. Estoy usando Ant para enviar un artefacto una vez que se complete la compilación. Tuve el mismo problema ... Exceptuando manualmente el certificado no funcionó (Jenkins es divertido de esa manera).Añadir estas opciones para su comando svn:

--non-interactiva

--trust-server-cert

1

de ejecución cmd: SVN lista de URL se le proporcionará con 3 opciones (r) expulsar, (a) ccept, (p) de manera erronea. enter p. Este problema resuelto para mí

1

Si está utilizando svn con Jenkins en un servidor de Windows, debe aceptar el certificado https usando el mismo usuario de servicios de Windows de Jenkins.
Por lo tanto, si su servicio Jenkins se ejecuta como "MISERVIDOR \ Administrador", debe utilizar este comando antes de todos los demás, sólo una vez, por supuesto:

runas/user: MISERVIDOR \ Administrador "SVN --username usuario - lista -password https://myserver/svn/REPO "

sVN le pide que acepte el certificado y lo almacena en el camino correcto.

Después de esto, podrá usar svn en el trabajo de jenkins directamente en un paso del comando de lote de Windows.

Cuestiones relacionadas