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.