You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SVN SSL证书验证失败求助:Sonar构建报错重启后问题复现

解决Sonar分析时SVN SSL证书验证失败(重启后失效)的问题

你遇到的这个问题很典型——SonarQube执行代码分析时调用SVN blame命令,因为SSL证书信任问题失败,而且之前临时接受证书的操作在系统重启后就失效了。核心原因是临时接受的证书没有被永久存储,或者存储的位置和Maven执行时的用户环境不匹配。下面给你几个靠谱的解决步骤:

1. 永久信任SVN服务器证书(最直接方案)

首先,务必用和运行Maven命令完全相同的用户,手动执行一次SVN仓库访问命令,选择永久接受证书:

svn info https://xxxxxxd01.xx.com/svn/project/trunk

执行后会弹出证书验证提示,输入p(代表永久信任)并回车。这样证书会被保存到该用户的SVN配置目录下,重启后也不会丢失。

如果是Windows系统,打开对应用户的命令提示符,执行上述命令,按提示选择永久信任即可。

2. 确认证书已被正确持久化存储

证书会被保存在用户专属的SVN认证目录:

  • Linux/macOS:~/.subversion/auth/svn.ssl.server/
  • Windows:C:\Users\<你的用户名>\AppData\Roaming\Subversion\auth\svn.ssl.server\

进入这个目录,你应该能看到一个以服务器哈希命名的文件,这就是你永久信任的证书文件。如果没有,说明刚才的永久接受操作没执行成功,或者你用错了用户。

3. 确保Maven与SVN的用户一致性

如果你的Maven命令是通过自动化工具(比如Jenkins、GitLab CI)运行的,一定要确认工具使用的用户和你手动接受证书的用户是同一个。比如Jenkins默认用jenkins用户,你需要切换到该用户下执行SVN命令:

sudo su - jenkins
svn info https://xxxxxxd01.xx.com/svn/project/trunk

4. 导入企业CA证书到系统/Java信任库(针对内部CA场景)

如果SVN服务器的证书是企业内部CA颁发的,你可以把CA根证书导入到系统信任存储,或者Java的信任库(因为Maven是Java应用):

导入到Java cacerts

keytool -import -trustcacerts -alias svn-internal-ca -file /path/to/your-ca.crt -keystore $JAVA_HOME/jre/lib/security/cacerts

默认密码是changeit,执行后重启Maven即可生效。

导入到系统信任库(Linux)

sudo cp /path/to/your-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

为什么重启后临时接受会失效?

临时接受证书(一般选t)只会把证书存在当前会话的临时缓存里,系统重启或者会话结束后就会被清除。只有选p永久接受,才会把证书写到用户的SVN配置目录,实现持久化保存。

内容的提问来源于stack exchange,提问作者Manasa Ramya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:47:24