news 2026/4/26 14:25:25

GitLab密钥过期别慌!手把手教你Ubuntu 22.04上两种方法(apt-key vs signed-by)修复EXPKEYSIG错误

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GitLab密钥过期别慌!手把手教你Ubuntu 22.04上两种方法(apt-key vs signed-by)修复EXPKEYSIG错误

GitLab密钥过期实战指南:Ubuntu 22.04两种修复方案深度解析

当你在Ubuntu 22.04上执行apt update时,突然看到那个令人不安的红色错误提示:"The following signatures were invalid: EXPKEYSIG 3F01618A51312F3F GitLab B.V.",这就像系统管理员版的"蓝屏时刻"。别担心,这实际上是GitLab仓库签名密钥过期的常见问题,而我将带你深入理解背后的机制,并提供两种可靠的解决方案。

1. 理解EXPKEYSIG错误的本质

那个看似晦涩的EXPKEYSIG错误实际上是Ubuntu的APT包管理系统在告诉你:"嘿,我无法验证这个软件包的来源是否可信"。就像你收到一封声称来自银行的邮件,但签名已经过期无法验证一样。

密钥过期的核心原因

  • GitLab用于签署软件仓库的GPG密钥有固定有效期(通常2年)
  • 虽然GitLab可能延长了密钥有效期,但你的本地系统并不知道这个更新
  • APT会严格检查签名有效性,拒绝任何过期或无效的签名

在终端中,完整的错误信息通常如下:

Err:36 https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu focal InRelease The following signatures were invalid: EXPKEYSIG 3F01618A51312F3F GitLab B.V.

有趣的是:这个错误实际上证明了APT的安全机制在正常工作,它阻止了你从可能不安全的源安装软件。

2. 诊断你的系统配置

在开始修复之前,我们需要确定你的系统使用的是哪种密钥管理方式。Ubuntu/Debian系统近年来从传统的apt-key方法过渡到了更安全的signed-by方式。

2.1 检查当前密钥管理方式

打开终端,执行以下命令:

grep 'deb \[signed-by=' /etc/apt/sources.list.d/gitlab_gitlab-*.list

结果解读

  • 无输出:你的系统使用传统的apt-key方法
  • 有输出:显示类似deb [signed-by=/usr/share/keyrings/gitlab-archive-keyring.gpg]的内容,表示使用signed-by方法

2.2 验证当前密钥状态

无论哪种方法,都可以先检查现有GitLab密钥:

apt-key list | grep -A1 "GitLab B.V."

或对于signed-by系统:

gpg --list-keys --keyring /usr/share/keyrings/gitlab-archive-keyring.gpg

3. 方案一:传统apt-key修复方法

如果你的系统仍在使用apt-key(Ubuntu 22.04默认已弃用,但可能仍有遗留配置),以下是详细修复步骤:

3.1 删除过期密钥

首先移除已过期的密钥:

sudo apt-key del 3F01618A51312F3F

注意:如果提示"未找到密钥",可能是因为密钥指纹格式不同,尝试:

sudo apt-key list | grep -B1 "GitLab" | grep -oE "[0-9A-F]{16}" | xargs -I {} sudo apt-key del {}

3.2 下载并添加新密钥

从GitLab官方获取最新密钥并添加到系统中:

curl -s "https://packages.gitlab.com/gpg.key" | sudo apt-key add -

3.3 验证密钥添加成功

检查新密钥是否已正确添加:

apt-key list | grep -A1 "GitLab B.V."

你应该能看到新的有效期日期(通常为2026年)。

4. 方案二:现代signed-by修复方法

对于使用signed-by指定密钥路径的新式配置(推荐),修复流程略有不同:

4.1 定位密钥文件位置

首先找出GitLab密钥的存储路径:

awk '/deb \[signed-by=/{ pubkey = $2; sub(/\[signed-by=/, "", pubkey); sub(/\]$/, "", pubkey); print pubkey }' /etc/apt/sources.list.d/gitlab_gitlab-*.list

典型路径可能是:/usr/share/keyrings/gitlab-archive-keyring.gpg

4.2 更新密钥文件

使用以下命令更新密钥文件:

curl -s "https://packages.gitlab.com/gpg.key" | sudo gpg --dearmor > /usr/share/keyrings/gitlab-archive-keyring.gpg

4.3 验证密钥更新

检查新密钥的有效期:

gpg --list-keys --keyring /usr/share/keyrings/gitlab-archive-keyring.gpg

5. 两种方法的深度对比与选择建议

为了帮助你选择最适合的方法,以下是关键对比:

特性apt-key方法signed-by方法
安全性较低(系统级信任)较高(仓库级信任)
维护性较难管理更易维护
Ubuntu 22.04支持度已弃用官方推荐
复杂度较简单稍复杂
未来兼容性可能停止支持长期支持

个人建议

  • 如果是临时修复,两种方法都可以
  • 如果是新系统或长期维护,强烈建议迁移到signed-by方法
  • 生产环境应考虑完全切换到signed-by以获得更好的安全性

6. 验证修复效果与后续步骤

完成上述任一方法后,执行以下命令验证:

sudo apt update

如果一切正常,你应该不再看到EXPKEYSIG错误,而是正常的更新过程。

常见问题排查

  • 如果仍然报错,尝试清除APT缓存:
    sudo apt clean sudo rm -rf /var/lib/apt/lists/* sudo apt update
  • 确保你的系统时间正确,错误的日期也会导致签名验证失败:
    date # 检查当前时间 sudo apt install ntpdate # 如果需要时间同步 sudo ntpdate pool.ntp.org

7. 预防措施与最佳实践

为了避免未来再次遇到类似问题,可以考虑以下预防措施:

  1. 定期检查密钥有效期

    # 对于apt-key apt-key list | grep -A1 "expired" # 对于signed-by find /usr/share/keyrings/ -name "*.gpg" -exec gpg --list-keys --keyring {} \;
  2. 设置监控警报:将密钥检查加入你的常规系统监控中

  3. 考虑使用本地镜像:对于企业环境,可以设置内部镜像并自行管理密钥

  4. 文档记录:为你的团队记录密钥更新流程,节省下次解决问题的时间

在管理多个Ubuntu系统的实践中,我发现建立一个简单的定期检查脚本可以提前发现这类问题。例如,每月运行一次密钥检查,并在到期前30天发出警告。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 14:21:42

开源力量:如何用CERN的TIGRE工具箱为你的研究论文“加速”与“增色”

学术图像重建新利器:TIGRE工具箱的实战应用指南 在科研论文写作中,图像质量往往决定着研究成果的呈现效果。特别是在医学影像、材料科学等领域,高质量的三维重建图像不仅能提升论文的视觉冲击力,更能增强数据的说服力。然而&#…

作者头像 李华
网站建设 2026/4/26 14:21:40

终极指南:让苹果触控板在Windows上获得原生级体验的完整方案

终极指南:让苹果触控板在Windows上获得原生级体验的完整方案 【免费下载链接】mac-precision-touchpad Windows Precision Touchpad Driver Implementation for Apple MacBook / Magic Trackpad 项目地址: https://gitcode.com/gh_mirrors/ma/mac-precision-touch…

作者头像 李华
网站建设 2026/4/26 14:15:48

SGLang-v0.5.6效果展示:看AI如何精准提取信息并自动填表

SGLang-v0.5.6效果展示:看AI如何精准提取信息并自动填表 1. 引言:当AI遇见表单处理 想象一下这样的场景:你收到100份客户反馈邮件,每封邮件都包含姓名、年龄、联系方式等关键信息。传统做法是人工逐条阅读、提取并录入到表格中—…

作者头像 李华