公司动态
Jenkins SVN 报错 E175002 SSL handshake failed 完整解决方案
目录一、报错根因二、推荐优先级方案从安全到临时兼容方案 1【最优推荐】升级 SVN 服务端支持 TLS1.2方案 2【临时兼容内网可用】修改 JDK 安全配置放开 TLS1.0/1.11找到java.security配置文件2修改禁用算法行3重启 Jenkins 服务主节点 所有代理节点都要改方案 3【Jenkins 启动参数无需改 JDK 全局配置】Linuxjenkins.serviceWindows Jenkins 服务方案 4【兜底方案】Jenkins 改用系统原生 svn 命令绕开 SVNKit三、补充排查步骤四、安全提醒一、报错根因JDK8u291、JDK11/17 默认禁用 TLS1.0 / TLS1.1而你的 SVN 服务端仅支持旧 TLS 协议Jenkins 内置 SVNKit 走 JDK SSL 握手协议无交集直接失败Atlassian。二、推荐优先级方案从安全到临时兼容方案 1【最优推荐】升级 SVN 服务端支持 TLS1.2验证 SVN 服务端 TLS 支持服务器执行openssl s_client -connect svn.xxx.com:443 -tls1_2能正常连接服务端已支持 TLS1.2排查 Jenkins JDK 配置握手失败SVNApache/VisualSVN配置开启 TLS1.2/1.3关闭老旧 TLS1.0/1.1。方案 2【临时兼容内网可用】修改 JDK 安全配置放开 TLS1.0/1.11找到java.security配置文件JDK8$JAVA_HOME/jre/lib/security/java.securityJDK11/JDK17$JAVA_HOME/conf/security/java.security2修改禁用算法行原始配置默认禁用旧 TLSjdk.tls.disabledAlgorithmsSSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \ DH keySize 1024, EC keySize 224, 3DES_EDE_CBC, anon, NULL删除TLSv1, TLSv1.1修改后jdk.tls.disabledAlgorithmsSSLv3, RC4, DES, MD5withRSA, \ DH keySize 1024, EC keySize 224, 3DES_EDE_CBC, anon, NULL3重启 Jenkins 服务主节点 所有代理节点都要改# Linux systemctl restart jenkins # Windows 服务管理器重启Jenkins方案 3【Jenkins 启动参数无需改 JDK 全局配置】修改 Jenkins 启动 JVM 参数指定 SVNKit 强制使用兼容 SSL 协议Linuxjenkins.service编辑/lib/systemd/system/jenkins.service在EnvironmentJENKINS_JAVA_OPTS追加-Dsvnkit.http.sslProtocolsTLSv1,TLSv1.1,TLSv1.2重载服务 重启systemctl daemon-reload systemctl restart jenkinsWindows Jenkins 服务修改jenkins-slave.xml主服务 / 代理节点在arguments添加参数arguments-Dsvnkit.http.sslProtocolsTLSv1,TLSv1.1,TLSv1.2 -Xrs -jar %BASE%\jenkins.war/arguments方案 4【兜底方案】Jenkins 改用系统原生 svn 命令绕开 SVNKitJenkins 默认用内置 SVNKitJava 库改用本地系统 svn 二进制工具不走 JDK SSL 限制服务器安装 svn 客户端# CentOS/Anolis yum install subversion -y # Ubuntu apt install subversion -yJenkins 全局配置系统管理 → 全局工具配置 → Subversion选择「指定 svn 可执行文件路径」填写/usr/bin/svn所有流水线 / 项目源码管理重新保存 SVN 配置重新构建。三、补充排查步骤区分主节点 / 代理节点代理节点构建报错代理节点 JDK、启动参数也要同步修改确认 Jenkins 使用的 JDK系统管理 → 全局工具配置 → JDK不要混淆系统 JDK 和 Jenkins 内置 JDK测试本地 svn 命令是否正常svn checkout https://svn.xxx.com/svn/project --username xxx本地命令能拉取、Jenkins 不行 Jenkins SVNKit/JDK SSL 问题本地命令也报错 SVN 服务端 TLS 配置问题。四、安全提醒1、仅内网封闭环境建议放开 TLS1.0/1.1公网 SVN 仓库务必升级服务端只保留 TLS1.2/1.3避免安全漏洞。2、如果jenkins使用的jdk21或更新版本目前尝试后只有二、推荐优先级方案 ---方案一 是可行的其它的都可行。