通过Smart Provisioning安装OpenEuler失败

答案内容由AI生成,仅供参考:

BMC 安全配置中 TLS 版本限制为仅 TLS 1.3 时,通过 Smart Provisioning 安装 OpenEuler 失败的问题分析与解决方案

根据您提供的详细日志和环境信息,当 BMC 的安全配置中 TLS 版本被设置为“仅限 TLS 1.3”时,Smart Provisioning (SP) 无法成功安装 OpenEuler,核心原因是 SP 客户端不支持与 BMC 的 Redfish 服务建立基于 TLS 1.3 的连接


:magnifying_glass_tilted_left: 问题核心诊断

:cross_mark: 错误日志分析

从您的 SP 日志中可以找到关键错误信息:

[2026-01-07 12:14:13,435 ERROR] (redfish_client.py:211)- Failure: failed to establish a new connection to the host, message:HTTPSConnectionPool(host='fe80:0000:0000:0000:9e7d:a3ff:fe28:6ffa%veth', port=40443): Max retries exceeded with url: /redfish/v1/Managers/ (Caused by SSLError(SSLError(1, ‘[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:1129)’))).

该错误明确指出了问题的本质:

  • SSLError(1, '[SSL: TLSV1_ALERT_PROTOCOL_VERSION]'):表明客户端(SP)尝试连接时,BMC 因协议版本不匹配而拒绝了连接。
  • tlsv1 alert protocol version:这是 TLS 协议层返回的致命警报,意味着客户端提供的协议版本(如 TLS 1.2 或更低)未被服务器(BMC)接受,而此时 BMC 已配置为只允许 TLS 1.3

:white_check_mark: 结论:Smart Provisioning 工具在当前版本(1.9.0)下使用的 Redfish 客户端库或其依赖的 OpenSSL 版本,不支持 TLS 1.3 协议,导致无法与强制启用 TLS 1.3 的 BMC 建立安全连接。


:books: 背景信息支持

1. TLS 配置在 BMC 中的作用

BMC 支持通过 Web 界面或 API 配置所允许的 TLS 协议版本,通常包括:

  • TLS 1.0 (已废弃)
  • TLS 1.1
  • TLS 1.2
  • TLS 1.3 (最新、最安全)

当配置为 “仅限 TLS 1.3” 时,所有通过 HTTPS 进行的通信(包括 Redfish API、Web UI、Smart Provisioning 等)必须使用 TLS 1.3 协议,否则连接将被中断。

2. Redfish 接口是 SP 实现自动化部署的关键

Smart Provisioning 依赖 Redfish 接口获取服务器资源信息、设置启动模式、部署操作系统等。相关路径如:

  • /redfish/v1/Managers/
  • /redfish/v1/Systems/

一旦无法建立 Redfish 连接,SP 即无法完成初始化和任务执行,表现为:

Failed to get slot id of server from redfish
Failed to establish redfish connection

这正是日志中反复出现的情况。


:white_check_mark: 已验证的解决方案

方案一:【临时解决】放宽 TLS 版本限制(推荐用于生产环境快速恢复)

您已经验证过此方案有效:

将 BMC 安全配置中的 TLS 版本从“仅限 TLS 1.3”改为“TLS 1.2 及更高版本”后,SP 安装 OpenEuler 成功。

:white_check_mark: 操作建议:

BMC Web 界面路径:
用户与安全 → 安全配置 → 安全增强 → TLS版本 → 选择 “TLS 1.2 及更高版本”

此设置允许 TLS 1.2 和 TLS 1.3 共存,兼容现有 SP 客户端,同时保持较高安全性。


方案二:【长期解决】升级 Smart Provisioning 或 Redfish 客户端支持 TLS 1.3

当前限制:

  • SP 使用的 Redfish 客户端(如 Python 的 redfish_client.py)可能基于较旧版本的 urllib3requests 库。
  • 若底层 OpenSSL 版本低于 1.1.1,则无法支持 TLS 1.3。

解决方向:

项目 建议
SP 工具版本 升级至支持 TLS 1.3 的新版本(如 SP 2.0+),确认其 Redfish 客户端是否使用 OpenSSL 1.1.1+ 或同等能力的 TLS 库
BMC Redfish 服务兼容性 确认 iBMC 版本(您使用的是 6.00.07.04 V3)是否提供向下兼容策略或可配置的协议白名单
开发/测试环境验证 使用 openssl s_client 测试连接能力:
openssl s_client -connect [BMC_IP]:443 -tls1_3

若返回 tlsv1 alert protocol version,说明客户端不支持;若能完成握手,则说明服务端配置允许。


:hammer_and_wrench: 根本原因总结

因素 状态
BMC 配置 强制仅使用 TLS 1.3,符合安全最佳实践
SP 客户端能力 不支持 TLS 1.3 协议(可能是 Python 环境、库版本或 OpenSSL 支持缺失)
Redfish 通信 失败于 TLS 握手阶段,协议版本不匹配
结果 SP 无法获取服务器资源、无法部署 OS,任务失败

:warning: 这不是 BMC 的故障,而是客户端与服务端之间的 TLS 协议兼容性问题


:white_check_mark: 推荐处理流程

graph TD
    A[SP 安装失败] --> B{检查 TLS 配置}
    B -->|仅限 TLS 1.3| C[尝试 SP 连接]
    C --> D[SSL 协议版本错误]
    D --> E[确认 SP 是否支持 TLS 1.3]
    E -->|不支持| F[临时调整为 TLS 1.2 及更高版本]
    E -->|支持| G[排查证书或网络问题]
    F --> H[SP 安装成功]
    H --> I[提交需求给 SP 开发方升级支持 TLS 1.3]

:megaphone: 建议与后续行动

  1. 向 Smart Provisioning 工具开发团队提交需求,要求:

    • 明确声明对 TLS 1.3 的支持情况。
    • 升级底层依赖库以支持现代 TLS 协议。
    • 提供在高安全模式下(仅 TLS 1.3)的兼容性测试报告。
  2. 文档化此限制
    在部署文档中添加说明:

    “当前 SP 版本(1.9.0)不支持 TLS 1.3,若 BMC 启用‘仅限 TLS 1.3’模式,将导致 Redfish 连接失败,请暂时配置为‘TLS 1.2 及更高版本’。”

  3. 监控未来版本兼容性

    • 关注 SP 新版本发布说明。
    • 关注 BMC 固件(iBMC)是否提供更灵活的 TLS 策略(如按客户端类型区分)。

:white_check_mark: 总结

项目 内容
问题原因 Smart Provisioning 客户端不支持 TLS 1.3,无法与仅启用 TLS 1.3 的 BMC 建立 Redfish 连接
错误表现 SSLError: [SSL: TLSV1_ALERT_PROTOCOL_VERSION]
根本原因 客户端与服务端 TLS 协议版本不兼容
临时方案 将 BMC TLS 版本设为“TLS 1.2 及更高版本”
长期方案 升级 SP 工具以支持 TLS 1.3
验证结果 已确认降级 TLS 配置后可成功安装 OpenEuler

:white_check_mark: 建议立即采用“TLS 1.2 及更高版本”配置以保障业务连续性,并推动 SP 工具升级以满足未来高安全环境的需求。

相关链接:

  1. 仿真环境启动后无法访问
  2. 【iTestSmart】检查BMC版本,给出告警后,未执行测试步骤。
  3. /redfish/v1/UpdateService/FirmwareInventory 多个属性缺失
  4. V3 Web界面安全配置TLS版本功能无效
  5. openUBMC