2010-06-30 18 views
53

Dostaję poniżej błędu podczas uruchamiania celu skryptu ANT. Komunikat o błędzie informujący, że "weryfikacja certyfikatu serwera nie powiodła się". Pomóż usunąć ten problem. Pracuję w systemie Windows XP.Weryfikacja certyfikatu serwera nie powiodła się: wystawca nie jest zaufany

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 

Odpowiedz

115

można spróbować uruchomić svn checkout raz ręcznie do adresu URL https://yoururl/trunk C:\ant-1.8.1\Test_Checkout używając wiersza poleceń i zaakceptować certyfikat.

Albo jak mówi @AndrewSpear poniżej

zamiast sprawdzać ręcznie uruchomić svn list https://your.repository.url od Terminal (Mac)/Command Line (Win), aby wybrać opcję, aby zaakceptować certyfikat na stałe

svn poprosi o potwierdzenie. zaakceptuj to na stałe.

Po tym powinno to działać dla kolejnych żądań ze skryptu ant.

+0

Działa to dobrze ... Teraz problem został rozwiązany. Wielkie dzięki. – Shaun

+0

Dodałem również przykładowy skrypt dla PHP tutaj: http://www.php.net/manual/en/function.svn-auth-set-parameter.php#104300 dla tego samego problemu. – powtac

+18

Zamiast ręcznie sprawdzać, po prostu uruchom 'svn list https: // your.repository.url' z Terminalu (Mac)/Wiersza poleceń (Win), aby uzyskać opcję akceptowania certyfikatu na stałe. – Andrew

43

Uruchom "svn help commit" na wszystkie dostępne opcje. Przekonasz się, że jest jedna opcja odpowiedzialna za przyjmowanie certyfikatów serwera:

--trust-server-cert: zaakceptować nieznanych certyfikatów serwera SSL bez monitowania (ale tylko z --non-interactive)

Dodaj go do swoich argumentów polecenia svn i nie trzeba będzie ręcznie uruchomić svn, aby zaakceptować go na stałe.

+0

to działało dla mnie;) thx – veritas

+3

Jest to najlepsze rozwiązanie dla skryptów automatycznych, które zwykle nie będą miały luksusu z kroków opisanych w zaakceptowanej odpowiedzi. Należy jednak zauważyć, że ślepo akceptując certyfikaty SSL w zasadzie pokonuje cały cel SSL, a zatem może otworzyć się na ataki MitM. – ken

+0

Jak mogę dodać tę opcję, jeśli używam wtyczki 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

Czy możesz wyjaśnić, w jaki sposób twój kod rozwiązuje problem? Możesz również nieco ulepszyć układ (białe odstępy). – ShiDoiSi

9

Nie użyłbym:

svn checkout 

tylko upoważnia uwierzytelnianie serwera, raczej używać:

svn list https://your.repository.url 

który poprosi cię o uwierzytelnienie, jak również.

Jeśli jest to potrzebne, aby dostać pozwolenie użytkownikowi, że nie mogę się zalogować, uruchom:

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

innych odpowiedzi nie działają na mnie. Próbuję uruchomić linię poleceń w Jenkins. Wszystko czego potrzebujesz to następujące argumenty wiersza poleceń:

--non-interactive

--trust-server-cert

0

Wystarczy zainstalować certyfikat serwera w zaufanych certyfikatów głównych pojemnika klienta (jeśli certyfikat wygasł to może nie działać). Aby uzyskać więcej informacji, zobacz ten artykuł z podobnym pytaniem.

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

0

podczas wierszu poleceń działa. Używam Ant do zatwierdzenia artefaktu po zakończeniu kompilacji. Doświadczyłem tego samego problemu ... Ręczne wyłączanie certyfikatu nie działa (Jenkins jest zabawny w ten sposób).Dodaj te opcje polecenia svn:

--non-interactive

--trust-server-cert

1

z cmd uruchom: SVN liście URL będą dostarczane z 3 opcji (r) eject, (a) ccept, (p) nietrwałe. wprowadź p. Rozwiązany problem dla mnie

1

Jeśli używasz svn z Jenkinsem na serwerze Windows, musisz zaakceptować certyfikat https przy użyciu tego samego użytkownika usługi Windows Jenkins.
Dlatego, jeśli usługa działa jak "Jenkins mójserwer \ Administrator", należy użyć tego polecenia przed wszystkim innym, tylko jeden raz przedmiotu:

runas/user: mój_serwer \ Administrator „svn --username użytkownika - -password lista hasło https://myserver/svn/REPO "

svn prosi, aby zaakceptować certyfikat i zapisuje go w dobrej drodze.

Po tej operacji będzie można korzystać z polecenia svn in jenkins bezpośrednio w kroku polecenia wsadowego Windows.

Powiązane problemy