TT Bigdata TT Bigdata
首页
GitHub (opens new window)
JaneTTR

JaneTTR

数据酿造智慧,每一滴都是沉淀!
  • 报错解决

  • 系统适配

    • Kylin V10系列
      • 通用部分

        • not set for current OS

          • 解读-不支持操作系统解读
          • 解决-增加系统支持范围(一)
          • 解决-增加系统支持范围(二)
          • 解决-增加系统支持范围(三)
          • 解决-增加系统支持范围(四)
        • 解决-TLS1.3导致依赖下载失败终极办法
          • 一、问题现象
          • 二、原因分析
          • 三、尝试过的方案
          • 四、根治方案 —— 系统全局强制 TLS1.2
          • 五、验证步骤
          • 六、方案对比与结论
    • Rocky系列
    • Ubuntu系列
    • Centos系列
    • OpenEuler系列
  • 监控与调优

  • BUG临时处理
  • 实验室

  • 运维资料
  • 系统适配
  • Kylin V10系列
  • 通用部分
JaneTTR
2025-09-28
目录
一、问题现象
二、原因分析
三、尝试过的方案
四、根治方案 —— 系统全局强制 TLS1.2
五、验证步骤
六、方案对比与结论

解决-TLS1.3导致依赖下载失败终极办法

# 一、问题现象 构建失败

在 Kylin V10 系统下编译 Ambari 时,执行 Bower 拉取依赖时出现报错:

bower underscore#1.7.0                                cached https://github.com/jashkenas/underscore.git#1.7.0
bower underscore#1.7.0                              validate 1.7.0 against https://github.com/jashkenas/underscore.git#1.7.0
bower sinon#1.10.3                                    cached https://github.com/cjohansen/Sinon.JS.git#1.10.3
bower sinon#1.10.3                                  validate 1.10.3 against https://github.com/cjohansen/Sinon.JS.git#1.10.3
bower angular-translate#*                             cached https://github.com/PascalPrecht/bower-angular-translate.git#2.19.1
bower angular-translate#*                           validate 2.19.1 against https://github.com/PascalPrecht/bower-angular-translate.git#*
bower lodash#>=1.3.0 <2.5.0                           cached https://github.com/lodash/lodash.git#2.4.2
bower lodash#>=1.3.0 <2.5.0                         validate 2.4.2 against https://github.com/lodash/lodash.git#>=1.3.0 <2.5.0
bower jquery#1.9.1 - 3                            not-cached https://github.com/jquery/jquery-dist.git#1.9.1 - 3
bower jquery#1.9.1 - 3                               resolve https://github.com/jquery/jquery-dist.git#1.9.1 - 3
bower jquery#1.9.1 - 3                               ECMDERR Failed to execute "git ls-remote --tags --heads https://github.com/jquery/jquery-dist.git", exit code of #128 fatal: unable to access
 'https://github.com/jquery/jquery-dist.git/': OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

Additional error details:
fatal: unable to access 'https://github.com/jquery/jquery-dist.git/': OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Ambari Main 3.0.0.0.0:
[INFO]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

对应的 Maven 控制台输出:

构建失败日志

影响范围

  1. git clone / bower install 拉取部分依赖失败;
  2. curl 下载某些依赖(如 phantomjs)中断;
  3. 报错集中在 SSL_ERROR_SYSCALL。

# 二、原因分析 TLS1.3兼容性

在 Kylin V10 / RHEL8 系统中,OpenSSL 默认启用了 TLS1.3。 但部分外部依赖仓库(尤其是老旧 Git 仓库或二进制下载站点),对 TLS1.3 握手过程支持不完整,导致连接中断。

排查线索

  • 使用 git ls-remote 可复现该问题;
  • 使用 curl -vI 可观察到 TLS1.3/ALPN 阶段卡死;
  • 切换为 TLS1.2 后下载恢复正常。

# 三、尝试过的方案 失败案例

我们曾经尝试通过 git config 针对 github.com 强制使用 HTTP/1.1:

git config --global http.https://github.com/.version HTTP/1.1
1

局限性

该方法只对 git 协议 有效。 对于 curl / phantomjs / npm 等依赖下载,仍会失败,无法彻底解决。

# 四、根治方案 —— 系统全局强制 TLS1.2 推荐

为避免逐个依赖单独处理,可以在 系统层面禁用 TLS1.3,统一强制使用 TLS1.2。 以下脚本适用于 Kylin V10 / RHEL8,支持幂等执行。

    #!/usr/bin/env bash
    # 强制 OpenSSL 全局使用 TLS1.2 (禁用 TLS1.3),幂等脚本
    # 适配 Kylin V10 / RHEL8 系环境
    
    set -euo pipefail
    
    CONF_FILE="/etc/pki/tls/openssl.cnf"
    BACKUP_FILE="${CONF_FILE}.bak.$(date +%F-%H%M)"
    
    # 检查配置文件是否存在
    if [[ ! -f "$CONF_FILE" ]]; then
      echo "❌ 未找到 $CONF_FILE,退出。"
      exit 1
    fi
    
    # 如果已经有 openssl_conf = default_conf,就认为已经改过
    if grep -q '^openssl_conf *= *default_conf' "$CONF_FILE"; then
      echo "✅ 已经配置过 openssl_conf,不需要重复修改。"
    else
      echo "🔧 备份原文件到 $BACKUP_FILE"
      cp -av "$CONF_FILE" "$BACKUP_FILE"
    
      echo "🔧 追加 TLS1.2 配置到 $CONF_FILE"
      cat <<'EOF' | cat - "$CONF_FILE" > "${CONF_FILE}.new" && mv "${CONF_FILE}.new" "$CONF_FILE"
    openssl_conf = default_conf
    
    [default_conf]
    ssl_conf = ssl_sect
    
    [ssl_sect]
    system_default = system_default_sect
    
    [system_default_sect]
    MinProtocol = TLSv1.2
    MaxProtocol = TLSv1.2
    
    EOF
      echo "✅ 配置已写入。"
    fi
    
    # 验证 openssl 是否加载 TLS1.2
    echo "🔍 验证 OpenSSL 协议版本..."
    openssl s_client -connect pypi.org:443 -servername pypi.org </dev/null 2>&1 | grep Protocol || true
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    // Make sure to add code blocks to your code group

    下面可以看到生效结果

    image-20250928103421150

    # 五、验证步骤 必须执行

    1. 验证 OpenSSL 协议版本:

      openssl s_client -connect github.com:443 </dev/null 2>&1 | grep Protocol
      
      1

      预期输出:

      Protocol  : TLSv1.2
      
      1
    2. 再次执行 bower install 或 mvn clean package,依赖应能正常下载。

    # 六、方案对比与结论

    方案 适用范围 优点 缺点
    git config 降级 HTTP/1.1 仅 git 简单、快速 无法覆盖 curl/npm
    系统全局 TLS1.2 全局 一次解决、覆盖所有工具链 需修改系统配置文件

    最终结论: 全局禁用 TLS1.3,强制 TLS1.2,是在 Kylin V10 环境下编译 Ambari 的最优解,能够彻底解决依赖下载失败问题。

    #Kylin V10#国产化适配#Ambari#版本适配#错误排查
    解决-增加系统支持范围(四)
    解读-Ambari3.0.0重启失败问题

    ← 解决-增加系统支持范围(四) 解读-Ambari3.0.0重启失败问题→

    最近更新
    01
    当前版本 2026/08
    08-29
    02
    把 Ambari Server HA 稳稳地跑起来
    08-17
    03
    从一次启用操作追到主备就绪
    08-17
    更多文章>
    Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式