你如何通过SVN命令行接受SSL证书?

是否有一个命令行选项,以避免提示的方式永久使用SVN命令行自动接受SSL证书?

这取决于你的svn版本。 最近(1.6+)有一些常用的非交互式(你想用来避免提示),还有一个–trust-server-cert可以做你想做的事情。

使用--trust-server-cert不会永久接受SSL证书。 您可以使用inputredirect通过命令行永久接受SSL证书,而不是使用--non-interactive

这里是一个Unix / Linux的例子:

 svn list [TARGET] << EOF p EOF 

注意:上面的“p”是用于(p)的。

我的解决scheme使用expect。 这是不安全的,但当其他解决scheme不会。

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

您应该能够下载证书,然后将其放在适当的目录中。 或者您可以下载CA证书,然后将configuration选项ssl-authority-files设置为信任该CA.

请参阅本书中的SSL证书pipe理部分。