Comment acceptez-vous un certificat SSL via la ligne de commande SVN?

20

Existe-t-il une option de ligne de commande pour accepter automatiquement un certificat SSL en utilisant la ligne de commande SVN de manière à éviter l'invite?

James McMahon
la source
Serait-ce mieux pour Stack Overflow?
James McMahon

Réponses:

20

Cela dépend quelque peu de votre version de SVN. Les plus récents (1.6+) ont l'habituel --non-interactive(que vous souhaitez utiliser pour éviter les invites) et aussi --trust-server-certcelui qui peut faire ce que vous voulez.

pjz
la source
Cette solution semble fonctionner. Malheureusement, le certificat de ligne de commande n'a pas résolu mon problème initial. Eh bien, au moins je sais ce qui ne fonctionne pas maintenant.
James McMahon
Si cela ne fonctionne toujours pas, c'est peut-être parce que vous ne pouvez pas accéder / créer le répertoire .subversion dans votre répertoire personnel. Solution trouvée ici: chipsandtv.com/articles/svn-invalid-certificates
icc97
Le lien chipsandtv.com est mort. Y a-t-il une autre source?
Joe McMahon
J'ai fini par devoir utiliser les deux options, maintenant ça marche, merci!
rogerdpack
10

L'utilisation --trust-server-certn'acceptera pas définitivement le certificat SSL. Vous pouvez accepter définitivement le certificat SSL via la ligne de commande en utilisant la redirection d'entrée et non en utilisant --non-interactive.

Voici un exemple pour Unix / Linux:

svn list [TARGET] << EOF
p
EOF

REMARQUE: le "p" ci-dessus est pour (p) de manière permanente.

Jesse
la source
Eh bien, ma version ( 1.6.6 (r40053)) n'offrira malheureusement tout simplement pas l' poption (permanente). Et puisque c'est sur une ancienne boîte que je ne peux plus mettre à jour ...
0xC0000022L
2

Ma solution utilise expect. Ce n'est pas sécurisé, mais cela fonctionnera lorsque les autres solutions ne le seront pas.

#!/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
la source
0

Vous devriez pouvoir télécharger le certificat, puis le placer dans le répertoire approprié. Ou vous pouvez télécharger le certificat de l'autorité de certification, puis définir l'option de configuration ssl-authority-files pour approuver cette autorité de certification.

Voir la section Gestion des certificats SSL dans le livre.

Zoredache
la source
Je suis dans une situation très étrange ici, voir serverfault.com/questions/7648/… , donc je veux pouvoir le retirer en une seule commande.
James McMahon