svn客户端默认拒绝自签名https证书是因未被本地信任,非不安全;正确做法是tortoisesvn首次访问时核对并永久接受证书指纹,命令行可用--trust-server-cert-failures临时跳过验证(仅调试),linux/macos应导入ca证书而非禁用验证,根本方案是部署受信证书或改用svn://、svn+ssh://协议。

SVN客户端默认拒绝连接自签名或不受信任的HTTPS证书,这是安全机制,不是“不安全”而是“未被本地信任”。所谓“静默连接”实际是跳过证书验证——这会带来中间人攻击风险,仅限测试或内网可信环境使用,生产环境绝不推荐。
Windows TortoiseSVN:接受并缓存证书指纹
首次访问自签名HTTPS服务器时,TortoiseSVN会弹出警告窗口。正确做法是:
✅ 点击“Accept permanently”(永久接受)
✅ 确认显示的证书指纹与运维人员提供的SHA-1或SHA-256指纹一致
✅ 不选“Accept temporarily”或关闭警告
该操作会将证书公钥指纹写入本地 Subversion 配置缓存(%APPDATA%\Subversion\auth\ssl-server),后续连接自动信任,无需重复确认。
命令行 svn 客户端:临时跳过验证(仅调试)
若必须绕过证书检查(例如CI脚本临时调试),可使用--trust-server-cert-failures=unknown-ca,other参数:
svn list --trust-server-cert-failures=unknown-ca,other https://your-svn-server/repo- 支持的失败类型包括:
unknown-ca(证书颁发机构未知)、cn-mismatch(域名不匹配)、expired(已过期)等 - ⚠️ 此参数不会持久化,每次命令需显式指定;且不能用于
svn commit等敏感操作(Subversion 1.9+ 默认禁止)
Linux/macOS:预置可信证书或禁用验证(高危)
更安全的做法是把服务器CA证书导入系统信任库:
- 将.pem格式的根证书复制到/etc/ssl/certs/,运行
update-ca-certificates - 或在~/.subversion/config中配置:
ssl-authority-files = /path/to/server-ca.crt
强制禁用验证(不推荐):
编辑~/.subversion/config,在[global]段添加:ssl-ignore-errors = yes
⚠️ 该设置影响所有仓库,极大削弱传输安全性。
根本解决:换用受信证书
静默连接本质是妥协。长期方案应是:
- 为SVN服务申请免费Let’s Encrypt证书(适用于有域名的公网或内网DNS解析环境)
- 企业内网部署私有CA,并将根证书统一推送到所有开发机信任库
- 若纯局域网无域名,改用
svn://协议(明文,需确保网络物理隔离)或svn+ssh://(复用SSH密钥认证)











