Wie akzeptieren Sie ein SSL-Zertifikat über die SVN-Befehlszeile?

20

Gibt es eine Befehlszeilenoption, um ein SSL-Zertifikat dauerhaft automatisch über die SVN-Befehlszeile zu akzeptieren, sodass die Eingabeaufforderung vermieden wird?

James McMahon
quelle
Wäre dies eine bessere Lösung für Stack Overflow?
James McMahon

Antworten:

20

Es hängt etwas von Ihrer SVN-Version ab. Neuere (1.6+) haben das Übliche --non-interactive(das Sie verwenden möchten, um Eingabeaufforderungen zu vermeiden) und auch ein --trust-server-cert, das tun kann, was Sie wollen.

pjz
quelle
Diese Lösung scheint zu funktionieren. Leider hat das Kommandozeilen-Zertifikat accept mein anfängliches Problem nicht gelöst. Na ja, zumindest weiß ich, was jetzt nicht funktioniert.
James McMahon
Wenn dies immer noch nicht funktioniert, liegt es möglicherweise daran, dass Sie nicht auf das .subversion-Verzeichnis in Ihrem Home-Verzeichnis zugreifen bzw. es nicht erstellen können. Die Lösung finden Sie hier: chipsandtv.com/articles/svn-invalid-certificates
icc97
Der chipsandtv.com-Link ist tot. Gibt es eine andere Quelle?
Joe McMahon
Ich musste letztendlich beide Optionen verwenden, jetzt funktioniert es, danke!
Rogerdpack
10

Mit --trust-server-certwird das SSL-Zertifikat nicht dauerhaft akzeptiert. Sie können das SSL-Zertifikat dauerhaft über die Befehlszeile akzeptieren, indem Sie die Eingabeumleitung verwenden und nicht --non-interactive.

Hier ist ein Beispiel für Unix / Linux:

svn list [TARGET] << EOF
p
EOF

HINWEIS: Das "p" oben steht für (p) dauerhaft.

Jesse
quelle
Naja, meine version ( 1.6.6 (r40053)) bietet die p(permanent) Option leider gar nicht an. Und da es sich um eine alte Box handelt, die ich nicht mehr aktualisieren kann ...
0xC0000022L
2

Meine Lösung verwendet erwarten. Es ist nicht sicher, aber es wird funktionieren, wenn die anderen Lösungen dies nicht tun.

#!/usr/bin/expect -f

set svn_username [lindex $argv 0]
set svn_password [lindex $argv 1]
set svn_url [lindex $argv 2]

spawn svn --username=${svn_username} --password=${svn_password} list ${svn_url}
expect "(R)eject, accept (t)emporarily or accept (p)ermanently? "
send -- "p\r"
expect "Store password unencrypted (yes/no)? "
send "no\r"
expect -re "root@.*:\/#"
Matt Friedman
quelle
0

Sie sollten in der Lage sein, das Zertifikat herunterzuladen und es dann in das entsprechende Verzeichnis abzulegen. Oder Sie können das CA-Zertifikat herunterladen und dann die Konfigurationsoption ssl-authority-files so einstellen , dass sie dieser CA vertraut.

Weitere Informationen finden Sie im Abschnitt zur Verwaltung von SSL-Zertifikaten im Buch.

Zoredache
quelle
Ich bin in einer sehr seltsamen Situation, siehe serverfault.com/questions/7648/… . Ich möchte es also mit einem einzigen Befehl ausführen können.
James McMahon