普通网友 2026-02-28 15:50 采纳率: 99.2%
浏览 1
已采纳

麒麟V10换源后apt update报错“Invalid signature”如何解决?

麒麟V10换源后执行 `apt update` 报错 “Invalid signature”(无效签名),主因是新源未同步或缺失对应GPG公钥,导致APT无法验证仓库元数据完整性。常见于手动替换为清华、中科大等第三方源,但未导入其签名密钥;或使用了已过期/不匹配的`kylin-signature-keyring`包;亦可能因系统时间严重偏差(±5分钟)引发签名校验失败。此外,部分镜像未完整同步麒麟官方仓库的`InRelease`/`Release.gpg`文件,也会触发该错误。解决需分步排查:先检查系统时间(`timedatectl status`),再尝试更新密钥(如`sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys `,注意新版APT已弃用`apt-key`,推荐用`gpg --dearmor`方式导入);最后确认所用源地址与麒麟V10 SP1/SP2版本严格匹配,避免混用Ubuntu源。务必优先参考麒麟官方《软件源配置指南》选用认证镜像。
  • 写回答

1条回答 默认 最新

  • Airbnb爱彼迎 2026-02-28 15:50
    关注

    一、现象层:识别“Invalid signature”错误的典型表现

    执行 sudo apt update 后终端输出类似以下关键错误:

    W: GPG error: https://mirrors.tuna.tsinghua.edu.cn/kylin/ v10 InRelease: The following signatures were invalid: EXPKEYSIG 8E9B2347A5C32691 Kylin Linux Archive Automatic Signing Key (2022) <security@kylinos.cn>
    E: The repository 'https://mirrors.tuna.tsinghua.edu.cn/kylin/ v10 InRelease' is not signed.

    该错误表明 APT 在解析 InReleaseRelease.gpg 文件时,无法完成 GPG 签名校验——这是安全机制的主动拦截,而非网络或权限问题。

    二、根因层:四维归因模型(时间|密钥|源版本|镜像完整性)

    依据麒麟V10 SP1/SP2架构特性与APT信任链机制,可将根本原因结构化为如下四类:

    维度典型诱因验证命令风险等级
    系统时间硬件时钟漂移>±5分钟,导致 GPG 签名时间戳校验失败timedatectl status | grep -E "(System clock|RTC time)"
    GPG 密钥未导入清华/中科大等镜像站公钥;或 kylin-signature-keyring 包版本过期(如 SP1 系统误装 SP2 的 keyring)apt list --installed | grep keyring & gpg -k | grep -i kylin极高

    三、诊断层:标准化排查流程(含 Mermaid 可视化)

    遵循「时间→密钥→源配置→镜像状态」递进逻辑,避免盲目操作:

    graph TD A[执行 sudo apt update] --> B{报 Invalid signature?} B -->|是| C[timedatectl status
    检查 ±5 分钟偏差] C -->|异常| D[systemctl restart systemd-timesyncd
    timedatectl set-ntp true] C -->|正常| E[检查 /etc/apt/trusted.gpg.d/ 下 keyring 文件] E --> F[gpg --dearmor -o /usr/share/keyrings/kylin-archive-keyring.gpg
    /tmp/kylin-release-key.asc] F --> G[验证源地址是否匹配 SP1/SP2:
    v10/sp1 vs v10/sp2] G --> H[访问 https://mirrors.tuna.tsinghua.edu.cn/kylin/dists/v10/InRelease
    确认 HTTP 200 且含有效签名块]

    四、修复层:符合 Debian Policy 与麒麟安全规范的操作范式

    ⚠️ 注意:自 Ubuntu 22.04 / Debian 12 起,apt-key 已被标记为 deprecated。麒麟V10(基于 Debian 10/11 衍生)推荐采用 gpg --dearmor + keyring 分离存储方式:

    1. 下载清华镜像公钥:
      wget -O /tmp/tuna-kylin-key.asc https://mirrors.tuna.tsinghua.edu.cn/kylin/kylin-archive-key.asc
    2. 转换为二进制 keyring:
      sudo gpg --dearmor -o /usr/share/keyrings/tuna-kylin-archive-keyring.gpg /tmp/tuna-kylin-key.asc
    3. 更新 /etc/apt/sources.list,指定 keyring:
      deb [arch=amd64 signed-by=/usr/share/keyrings/tuna-kylin-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/kylin/ v10 main universe

    五、治理层:构建可持续的源管理机制

    面向企业级运维场景,建议落地三项长效机制:

    • 源配置原子化:使用 apt-cacher-ngapt-mirror 构建本地缓存源,统一密钥注入与版本锁定;
    • 密钥生命周期管理:建立 /etc/apt/keyring-updates/ 目录,配合 cron 每月校验 gpg --list-sigs 与证书有效期;
    • 版本兼容性白名单:严格遵循《麒麟软件源配置指南》附录 A —— SP1 仅允许使用 v10/sp1 路径,SP2 必须使用 v10/sp2,禁止混用 ubuntudebian 源。

    所有操作均需在麒麟V10最小化安装环境(kernel 4.19+,apt 2.2.4+)下验证通过,并适配 aarch64/x86_64 双平台。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 3月1日
  • 创建了问题 2月28日