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?


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.


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.


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@.*:\/#"

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.