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

GitLab运行单元测试连接SQL Server因TLS10不被接受报错求助

问题根因

报错核心原因是内网GitLab Runner环境的Java 11默认将TLS 1.0加入了TLS协议禁用列表,而老旧SQL Server仅支持TLS 1.0,握手阶段协商失败。本地运行正常是因为你的本地Java环境要么修改过默认安全配置,要么JDBC连接参数已经适配了TLS 1.0要求。

可行解决方案(满足所有限制条件)

方案1:修改JDBC连接URL参数(优先推荐,无需修改运行环境)

  • 在数据库连接URL后追加以下参数,即可强制JDBC驱动使用TLS 1.0协议协商:
    sslProtocol=TLSv1;tlsVersions=TLSv1
  • 完整连接URL示例:
    jdbc:sqlserver://<数据库地址>:<端口>;databaseName=<库名>;encrypt=true;trustServerCertificate=true;sslProtocol=TLSv1;tlsVersions=TLSv1
    如果业务允许非加密连接,也可以直接添加encrypt=false参数跳过SSL校验,同样可以解决问题。

方案2:修改GitLab CI执行参数(无需修改业务代码,仅调整CI配置)

如果不方便修改连接配置,可以直接在Gradle测试命令中添加JVM参数,覆盖Java 11默认的禁用TLS规则,修改你的gitlab-ci.yml的script部分即可:

test:
    stage: test
    tags:
      - Linux
    script:
        - echo "Test stage"
        - ./gradlew test -i -Dorg.gradle.jvmargs="-Djdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL"

该参数将TLS 1.0从默认禁用算法列表中移除,允许Java 11客户端使用TLS 1.0和SQL Server建立连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:54:03