AC测试时出现 web无法登陆,ssh登陆正常

// 此模板仅供参考,如果不适用可以修改

问题描述

[故障描述] AC测试过程中,BMC web出现拒绝连接无法登陆,SSH可以连接,通过SSH升级SSL证书后故障消失。

环境信息

  • 软件版本:[openubmc 2512基线]

重现步骤

ACcycle循环测试

期望结果

ACcycle测试过程中,当BMC初始化完成后,web可正常登陆

实际结果

在大概30次ACcycle后,BMC web无法登陆,显示拒绝连接,ssh可登陆,更新ssl证书后,BMC未重启时可正常登陆WEB。

尝试过的解决方案

一键收集日志中故障日志显示:

2026-02-02 15:36:55.621295 certificate ERROR: class.lua(130): failed to start certificate in init stage, err: error loading module ‘rtos_security_config.domain.banner_config’ from file ‘/opt/bmc/apps/certificate/lualib/rtos_security_config/domain/banner_config.lua’: …ate/lualib/rtos_security_config/domain/banner_config.lua:1: unexpected symbol stack traceback: [C]: at 0xffffa8288138 [C]: in function ‘require’ …lualib/rtos_security_config/rtos_security_config_app.lua:46: in function ‘banner_config_init’ …lualib/rtos_security_config/rtos_security_config_app.lua:27: in function ‘execute’ ./opt/bmc/libmc/lualib/mc/class.lua:201: in function ‘new’ ./opt/bmc/libmc/lualib/mc/singleton.lua:40: in function <./opt/bmc/libmc/lualib/mc/singleton.lua:38> [C]: in function ‘’ /opt/bmc/skynet/lualib/skynet/queue.lua: in function </opt/bmc/skynet/lualib/skynet/queue.lua:0> ./opt/bmc/libmc/lualib/mc/singleton.lua:38: in function ‘new’ ./opt/bmc/apps/certificate/lualib/certificate_app.lua:114: in function ‘old_init’ ./opt/bmc/libmc/lualib/mc/service_app_base.lua:342: in function <./opt/bmc/libmc/lualib/mc/service_app_base.lua:340> [C]: in function ‘pcall’ ./opt/bmc/libmc/lualib/mc/class.lua:125: in function ‘execute’ ./opt/bmc/libmc/lualib/mc/class.lua:201: in function ‘new’ ./opt/bmc/apps/certificate/service/main.lua:35: in function ‘user_main’ ./opt/bmc/libmc/lualib/mc/app_preloader.lua:182: in function ‘’ /opt/bmc/skynet/lualib/skynet.lua: in function </opt/bmc/skynet/lualib/skynet.lua:0> [C]: in function ‘xpcall’ /opt/bmc/skynet/lualib/skynet.lua: in function ‘init_service’ /opt/bmc/skynet/lualib/skynet.lua: in function ‘’ /opt/bmc/skynet/lualib/skynet.lua: in function </opt/bmc/skynet/lualib/skynet.lua:0>

请问故障是否涉及certificate闭源组件。

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

AC测试期间BMC Web无法登录、SSH正常问题分析

:pushpin: 问题概述

在执行AC循环(ACcycle)测试过程中,BMC Web界面出现“拒绝连接”故障,无法登录;但SSH连接功能正常。通过SSH登录系统并重新更新SSL证书后,Web登录功能恢复且无需重启BMC。

该问题在进行约30次AC循环后复现一次,具有一定的偶发性,但对系统长期稳定性构成影响。


:magnifying_glass_tilted_left: 故障现象详情

项目 内容
故障描述 ACcycle测试中,BMC Web服务拒绝连接,但SSH可正常访问
软件版本 openUBMC 2512 基线
预期结果 ACcycle后BMC初始化完成,Web可正常访问
实际结果 多次AC后Web无法访问,表现为“连接被拒绝”;SSH始终可用
临时解决方案 通过SSH登录后更新SSL证书,Web即刻恢复

:puzzle_piece: 根本原因分析

:magnifying_glass_tilted_right: 日志关键错误信息

failed to start certificate in init stage, err: error loading module ‘rtos_security_config.domain.banner_config’ 
from file ‘/opt/bmc/apps/certificate/lualib/rtos_security_config/domain/banner_config.lua’: 
...lua:1: unexpected symbol

该日志表明:

  • certificate组件在初始化阶段失败;
  • Lua脚本加载异常:banner_config.lua 文件解析错误,提示“unexpected symbol”,说明文件内容不合法或被损坏;
  • 错误发生在RTOS安全配置初始化流程中,影响了整个证书服务的启动。

由于证书服务未能正常加载,导致依赖证书的Nginx/Web服务无法启动,从而造成Web访问“连接被拒绝”。


:white_check_mark: 是否涉及 certificate 闭源组件?

结论:是,本次故障与 certificate 组件直接相关,且极可能涉及其闭源部分。

分析依据如下:

  1. certificate 组件职责核心性

    • certificate 组件负责管理BMC系统中的所有SSL/TLS证书,包括:
      • SSL证书的存储(/data/trust/cert/ssl/SSL_1.crt
      • 与数据库(SQLite)中的持久化数据同步
      • 启动时向Nginx等服务提供证书数据
    • 若此组件启动失败,将直接导致Web服务无证书可用,Nginx无法加载,最终表现为Web无法访问。
  2. 错误发生在组件初始化阶段

    • 错误堆栈显示,失败位于 certificate_app.luaold_init 阶段,属于组件启动的核心路径。
    • rtos_security_config_app.lua 是RTX安全架构的一部分,通常这部分代码由供应商提供二进制或加密Lua模块(即闭源组件),用于确保安全性。
  3. Lua模块加载失败暗示文件完整性问题

    • 报错“unexpected symbol”常见于:
      • 文件内容损坏(如AC过程中落盘中断)
      • 加密/解密失败导致Lua源码解压出错
      • 闭源模块签名验证失败或动态加载失败
    • 结合AC循环这一触发条件,推测该问题可能源于闭源组件在断电场景下加载不稳定或持久化机制存在缺陷
  4. 修复方式佐证问题根源

    • 手动更新证书后功能恢复,说明:
      • Web服务本身无损;
      • Nginx依赖证书数据重建;
      • certificate 组件在运行时能正常工作,但冷启动或AC恢复时初始化失败
    • 此类“运行时可恢复、冷启出问题”的模式常见于闭源配置加载失败场景。

:hammer_and_wrench: 排查与解决方案建议

:play_button: 确认SSL证书状态(SSH下执行)

# 查看SSL证书文件是否存在
ls -lh /data/trust/cert/ssl/SSL_1.crt

# 查询数据库中证书信息
/usr/sbin/sqlite3 /data/trust/persistence/per_poweroff.db \
"SELECT * FROM persist_table WHERE table_name = 't_certificate';"

# 检查certificate组件日志
cat /var/log/app.log | grep certificate

:play_button: 检查nginx是否运行

netstat -ntlpa | grep :80
ps | grep nginx

若nginx未运行,而证书文件缺失或certificate组件未就绪,则进一步确认问题链:

AC断电certificate组件初始化失败SSL证书未加载Nginx未启动Web拒绝连接


:books: 参考资料支持

  1. 来自文档id:1《openUBMC300 V3问题定位分享》

    “目前遇到很多web打不开的问题,主要是ssl证书获取失败,导致Nginx未加载。”
    提供了标准定位流程,强调检查 /data/trust/cert/ssl/SSL_1.crt 和数据库条目。

  2. 来自文档id:6《证书业务介绍》

    certificate 组件负责为Web提供SSL证书,缺失会导致nginx无法加载,进而Web访问失败。
    并指出:ipmcget -t certificate -d info 可用于查询证书信息。

  3. 知识图谱关联信息

    • BMC Web Interface 的可用性依赖于 Web Access
    • Web Access 的前提条件为 SSL证书成功导入并加载
    • SSH Access 不依赖证书组件,因此仍可正常使用

:white_check_mark: 建议对策

动作 说明
1. 修复当前环境 使用已知有效证书重新导入:
ipmcset -t certificate -d import ...
2. 添加启动检测脚本 在AC后自动检测certificate服务状态和SSL文件完整性
3. 持久化机制加固 确保关键Lua配置文件(如banner_config.lua)在AC过程中不会部分写入或损坏
4. 升级或替换闭源组件 联系openUBMC社区或供应商确认certificate组件是否存在已知AC兼容性问题,是否存在更新版本
5. 增加日志追踪 rtos_security_config_app.lua中增加更细粒度的日志输出,便于定位模块加载失败的具体原因

:white_check_mark: 总结

项目 回答
是否涉及 certificate 组件? :white_check_mark: 是,核心组件
是否涉及闭源部分? :white_check_mark: 极高可能性,因其初始化过程包含加密/受保护Lua模块加载
故障本质原因 AC断电导致 certificate 组件初始化失败,SSL证书未加载,Nginx未启动
为何SSH正常? SSH不依赖Web和SSL证书服务
推荐最终解决方案 加固certificate组件的持久化与恢复机制,升级至稳定版本,避免AC导致服务中断

:pushpin: 建议提交此问题至 openUBMC 社区论坛(如 https://discuss.openubmc.cn)并引用相关日志,寻求 certificate 组件维护方的技术支持

相关链接:

  1. 【用户管理】【登录】AC长稳测试,ssh登录BMC概率登录失败
  2. hi1711 bmc恢复出厂固件
  3. AC后BMC web连接不上,bmc reset可恢复
  4. 自签名的openubmc版本不保留配置升级后,web页面提示拒绝连接
  5. openUBMC300 V3问题定位分享 | 文档中心 | openUBMC

重新导入SSL证书后,继续AC测试数次又出现了相同故障现象。重新导入证书无法解决当前故障。

有有没有一键收集日志提供一下

1 个赞

你给的日志里

app.log有1处显示导出和校验ssl 证书失败。

2026-02-02 15:47:31.674920 cli WARNING: init.lua(97): nil:46 > nil:-1 > common.lua:32: Failed to import the public key.
2026-02-02 15:47:31.676085 cli WARNING: init.lua(97): nil:46 > nil:-1 > common.lua:33: Failed to import the certificate.
2026-02-02 15:47:31.676988 cli WARNING: init.lua(97): nil:46 > nil:-1 > common.lua:34: The value ****** of the property path does not contain the file name or does not exist in the tmp directory.
2026-02-02 15:47:31.677912 cli WARNING: init.lua(97): nil:46 > nil:-1 > common.lua:35: Import weak password dictionary failed.
2026-02-02 15:47:31.719491 certificate WARNING: init.lua(97): nil:284 > certificate_collection_base.lua:-1 > file_proxy.lua:76: Failed to import the public key.
2026-02-02 15:47:31.720032 certificate WARNING: init.lua(97): nil:284 > certificate_collection_base.lua:-1 > file_proxy.lua:77: Failed to import the certificate.
2026-02-02 15:47:31.720504 certificate WARNING: init.lua(97): nil:284 > certificate_collection_base.lua:-1 > file_proxy.lua:78: The value ****** of the property content does not contain the file name or does not exist in the tmp directory.
2026-02-02 15:47:31.720907 certificate WARNING: init.lua(97): nil:284 > certificate_collection_base.lua:-1 > file_proxy.lua:79: Import weak password dictionary failed.
2026-02-02 15:47:31.809289 certificate NOTICE: certificate_collection_ssl.lua(225): import cert with key
2026-02-02 15:47:31.838859 certificate NOTICE: persist_client_lib.lua(170): persist saving large data, op: delete, table: t_certificate, primary_key: [["CertificateUsageType",1],["Id",1]], data_size: 8922
2026-02-02 15:47:31.876781 certificate NOTICE: persist_client_lib.lua(170): persist saving large data, op: insert, table: t_certificate, primary_key: [["CertificateUsageType",1],["Id",1]], data_size: 9444
2026-02-02 15:47:31.895409 oms NOTICE: log_init.lua(326): Delete CA certificate file
2026-02-02 15:47:31.975640 cli NOTICE: base.lua(518): processing_flow_2 foreach_1 timeout,[path=/bmc/kepler/CertificateService, interface=bmc.kepler.CertificateService], t1=1770018451673, t2=1770018451975, time=302
2026-02-02 15:47:31.985050 oms NOTICE: log_init.lua(339): FilePath property is changed
2026-02-02 15:47:31.988768 oms NOTICE: log_init.lua(362): FilePath property is changed to /data/trust/cert/ssl/SSL_1.crt
2026-02-02 15:47:32.319057 oms NOTICE: config.lua(455): Updating remote syslog Config
2026-02-02 15:47:32.522898 nsm NOTICE: ssl.lua(136): [nginx] Export SSL cert key failed, will try again, err: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include:the remote application did not send a reply, the messagebus security policy blocked the reply, the reply timeout expired,or the network connection was broken.
2026-02-02 15:47:33.623640 network_adapter ERROR: ncsi_channel.lua(172): ncsi cmd ctrl enable channel tx failed, package_id = 8, channel_id = 3, eth_name = eth0 [repeated 8 times in 312s from 2026-02-02 15:42:21.945379 to 2026-02-02 15:47:33.623640]
2026-02-02 15:47:36.762778 general_hardware NOTICE: fructl_handler.lua(76): get_power_state: get power power ON
2026-02-02 15:47:37.729315 om_priv ERROR: l_verify.c(136): Check private key failed, err: error:05800074:x509 certificate routines::key values mismatch
2026-02-02 15:47:37.729864 om_priv ERROR: l_verify.c(241): [nginx] Verify ssl cert failed
2026-02-02 15:47:37.733448 om_priv ERROR: l_verify.c(213): The public key of the GMTLS protocol must be SM2
2026-02-02 15:47:37.733889 om_priv ERROR: l_verify.c(257): [nginx] Verify gm ssl cert failed
2026-02-02 15:47:37.735575 nsm ERROR: ssl.lua(277): [nginx] Failed to verify the SSL certificate and key, res: 18
2026-02-02 15:47:37.736174 nsm ERROR: control.lua(68): [nginx] Get SSL cert failed

operation.log显示,导入证书后可以访问web。

2026-02-02 15:47:31 CLI,Administrator@10.1.17.26:52803,trust,Import custom certificate successfully
2026-02-02 15:47:55 WEB,Administrator@10.1.17.26,iam,User Administrator(10.1.17.26) login successfully
2026-02-02 15:48:35 WEB,Administrator@10.1.17.26,oms,Collect diagnose file start successfully
2026-02-02 15:49:10 CLI,Administrator@10.1.16.46,iam,User Administrator(10.1.16.46) logout successfully
2026-02-02 15:49:10 CLI,Administrator@127.0.0.1,iam,User Administrator(127.0.0.1) logout successfully

具体是哪次AC后,web界面显示异常。

| 发送故障前最后一次AC时间是2026/2/2 15:22。测试验证脚本原理是OS IP可以正常ping通之后,连接BMCweb,出现失败,后尝试浏览器直接打开发现拒绝访问;

导入证书发生在15:44之后。

操作日志里显示, 15:20之后有3次AC和 web登录记录。

2026-02-02 15:20:03 CLI,Administrator@10.1.16.46:51336,fructrl,Set FRU0 to ACCycle successfully

2026-02-02 15:27:02 WEB,Administrator@10.1.16.46,iam,User Administrator(10.1.16.46) login successfully


2026-02-02 15:27:34 CLI,Administrator@10.1.16.46:51580,fructrl,Set FRU0 to ACCycle successfully
2026-02-02 15:34:23 WEB,Administrator@10.1.16.46,iam,User Administrator(10.1.16.46) login successfully

2026-02-02 15:34:55 CLI,Administrator@10.1.16.46:51778,fructrl,Set FRU0 to ACCycle successfully
2026-02-02 15:47:55 WEB,Administrator@10.1.17.26,iam,User Administrator(10.1.17.26) login successfully

操作日志里最后一次登录IP也是我的IP。也就是应该是最后一次AC到最后一次登录之间出现的故障

你访问的时候,确定BMC已经启动完了么?
最后一次AC后, 做了什么操作,web又可以恢复访问了?

15:44测试反馈AC测试中断,原因是WEB访问提示拒绝访问;

期间尝试不同浏览器均无法登陆web,然后登录SSH,刷写SSL证书;

15:47登录是在未重启BMC的情况下,重新导入SSL证书后成功登录WEB;

访问时BMC状态:
测试反馈问题后,ssh可正常登陆,web异常,OS已启动(ip 已成功ping通)
测试AC测试动作:

测试在执行自动化AC脚本,服务器整机AC后,查询OS 状态可连接时,然后访问BMC web检查BMC状态。确认无异常重复执行ACcycle。(脚本提示故障位置为访问web失败)

  1. certificate组件中间偶现启动失败的报错日志表示的类初始化失败, 这个涉及到基础框架的逻辑。 当前没找到根因。
  2. 最后一次certificate组件启动正常, web无法登录, 表象是ssl证书加载异常,这块从日志看还看不出根因,还需要时间定位。