2010-06-30 4 views
53

Je suis en deçà d'une erreur lors de l'exécution d'une cible de script ANT. Message d'erreur indiquant que "la vérification du certificat du serveur a échoué". S'il vous plaît aidez comment enlever ce problème. Je travaille sous Windows XP.Échec de la vérification du certificat de serveur: l'émetteur n'est pas approuvé

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 

Répondre

115

peut vous essayez d'exécuter svn checkout manuellement une fois à votre URL https://yoururl/trunk C:\ant-1.8.1\Test_Checkout en ligne de commande et certificat accepter.

Ou, comme dit ci-dessous @AndrewSpear

Plutôt que de vérifier exécuter manuellement svn list https://your.repository.url du Terminal (Mac)/ligne de commande (Win) pour obtenir la possibilité d'accepter définitivement le certificat

svn vous demandera confirmation. Acceptez-le définitivement. Ensuite, cela devrait fonctionner pour les requêtes ultérieures du script ant.

+0

Cela fonctionne bien ... Maintenant, le problème est résolu. Merci beaucoup. – Shaun

+0

J'ai ajouté un exemple de script pour PHP ici: http://www.php.net/manual/en/function.svn-auth-set-parameter.php#104300 pour le même problème. – powtac

+18

Plutôt que de vérifier manuellement, je lance simplement 'svn list https: // your.repository.url' à partir de Terminal (Mac)/Ligne de commande (Win) pour avoir l'option d'accepter le certificat de manière permanente. – Andrew

43

Exécutez "svn help commit" pour toutes les options disponibles. Vous verrez qu'il ya une option responsable de l'acceptation des certificats de serveur:

--trust-server-cert: accepter les certificats de serveur SSL inconnus sans inviter (mais seulement avec --non-interactive)

Ajoutez à vos arguments de commande svn et vous aurez pas besoin exécuter svn manuellement pour l'accepter définitivement.

+0

cela a fonctionné pour moi;) thx – veritas

+3

Ceci est la meilleure solution pour les scripts automatisés, qui n'auront normalement pas le luxe des étapes décrites dans la réponse acceptée. Il convient de noter cependant que l'acceptation aveugle des certificats SSL va à l'encontre de l'objectif de SSL et peut donc vous ouvrir aux attaques de MitM. – ken

+0

Comment puis-je ajouter cette option si j'utilise maven scm plugin? – 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

Pouvez-vous expliquer comment votre code résout son problème? En outre, vous pouvez améliorer la disposition (espacement des blancs) un peu. – ShiDoiSi

9

Je ne voudrais pas utiliser:

svn checkout 

juste autorise l'authentification du serveur, j'utilise plutôt:

svn list https://your.repository.url 

qui vous demandera de faire l'authentification aussi bien. Si cela est nécessaire

pour obtenir l'autorisation d'un utilisateur qui ne peut pas ouvrir une session, exécutez:

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

Les autres réponses ne fonctionnent pas pour moi. J'essaie de faire fonctionner la ligne de commande à Jenkins. Tout ce que vous avez besoin sont les arguments de ligne de commande suivante:

--non-interactive

--trust-server-cert

0

Il suffit d'installer le certificat de serveur dans le conteneur certificats racine de confiance du client (si certifié, il est arrivé à expiration ne peut pas travailler). Pour plus de détails, voir ce post de question similaire.

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

0

lors de travaux en ligne de commande. J'utilise Ant pour commettre un artefact après la fin de la construction. Expérimenté le même problème ... Manuellement excepté le cert n'a pas fonctionné (Jenkins est drôle de cette façon).Ajouter ces options à votre commande svn:

--non interactive

--trust-server-cert

1

de run cmd: Liste SVN URL vous sera fourni avec 3 options (r) éjecter, (a) ccept, (p) éermanemment. entrer p. Ce problème résolu pour moi

1

Si vous utilisez svn avec Jenkins sur un serveur Windows, vous devez accepter le certificat https en utilisant le même utilisateur du service Windows de Jenkins.
Ainsi, si votre service Jenkins fonctionne comme "MYSERVER \ Administrateur", vous devez utiliser cette commande avant tous les autres, une seule fois bien sûr:

runas/user: MYSERVER \ Administrator « svn --username utilisateur - liste des mots de passe -password https://myserver/svn/REPO "

svn vous demande d'accepter le certificat et stocke dans le droit chemin. Ensuite, vous pourrez utiliser le travail svn in jenkins directement dans une étape de commande par lots de Windows.

Questions connexes