GIT GPG KEY过期后重新更新时间

GIT GPG KEY过期处理

git使用过程中若使用过GPG KEY为commit进行签名,在一段时间未使用后,再次对某个库进行操作,提交时会发现,提示gpg签名失败。

error: gpg failed to sign the data
fatal: failed to write commit object

通过命令查看具体账户下的gpg keys.

$ gpg2 --list-secret-keys --keyid-format long
/home/nn/.gnupg/pubring.kbx
---------------------------------
sec   rsa4096/3CF8D791AB81AE55 2020-08-26 [SC]
      A598B8F2448C8B19C2ECF7803CF8D791AB81AE55
uid                 [ultimate] Nicholas <NN@sz.com.cn>
ssb   rsa4096/A0B38A3FA93702EB 2020-08-26 [E]

sec   rsa4096/5BA245F4CC9794AF 2020-10-28 [SC] [expired: 2020-10-29]
      D377D1F46DDCFF450B24FCD05BA245F4CC9794AF
uid                 [ expired] sanren1024 (github gpg) <sanren1024@aliyun.com>

可以看到ID5BA245F4CC9794AF的状态是expired,即过期了。

重新使用

使用命令对gpg key进行编辑,进入到编辑命令行模式。

$ gpg --edit-key 5BA245F4CC9794AF
gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret key is available.

sec  rsa4096/5BA245F4CC9794AF
     created: 2020-10-28  expired: 2020-10-29  usage: SC  
     trust: ultimate      validity: expired
ssb  rsa4096/940927C936A8FDEA
     created: 2020-10-28  expired: 2020-10-29  usage: E   
[ expired] (1). sanren1024 (github gpg) <sanren1024@aliyun.com>

gpg> 

提示符gpg>表示进入到了编辑命令行模式,接着输入expire以更新取消日期.

gpg> expire
Changing expiration time for the primary key.
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)

查看到提示,可以输入的格式标题下次取消的时间点。接着按格式进行输入,这里选择输入180即180天后再次取消。

Key is valid for? (0) 180
Key expires at Tue 29 Jun 2021 10:42:58 AM CST
Is this correct? (y/N) y

sec  rsa4096/5BA245F4CC9794AF
     created: 2020-10-28  expires: 2021-06-29  usage: SC  
     trust: ultimate      validity: ultimate
ssb  rsa4096/940927C936A8FDEA
     created: 2020-10-28  expired: 2020-10-29  usage: E   
[ultimate] (1). sanren1024 (github gpg) <sanren1024@aliyun.com>

gpg: WARNING: Your encryption subkey expires soon.
gpg: You may want to change its expiration date too.
gpg> 

这样再次看到的状态是ultimate,不再是expired

因为重新更新了取消时间,需要输入trust命令。

gpg> trust
sec  rsa4096/5BA245F4CC9794AF
     created: 2020-10-28  expires: 2021-06-29  usage: SC  
     trust: ultimate      validity: ultimate
ssb  rsa4096/940927C936A8FDEA
     created: 2020-10-28  expired: 2020-10-29  usage: E   
[ultimate] (1). sanren1024 (github gpg) <sanren1024@aliyun.com>

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

Your decision? 5
Do you really want to set this key to ultimate trust? (y/N) y

sec  rsa4096/5BA245F4CC9794AF
     created: 2020-10-28  expires: 2021-06-29  usage: SC  
     trust: ultimate      validity: ultimate
ssb  rsa4096/940927C936A8FDEA
     created: 2020-10-28  expired: 2020-10-29  usage: E   
[ultimate] (1). sanren1024 (github gpg) <sanren1024@aliyun.com>

提示输入信任key的成都,根据需要进行选择即可,最后输入save命令,保存后退出。

gpg> save

保存退出,重新commit

上述步骤完成后,gpg key就被更新了,接着需要在确保设置了gpg签名后,进行重新提交。

$ git config --local commit.gpgSign true # 使用gpg签名
$ git config --local user.signingKey 5BA245F4CC9794AF # 设置gpg签名的KEY_ID

可以使用上述命令,重新设置库的gpg。
接着就可以进行正常commit操作。

### 如何生成用于GitGPG密钥 #### 安装GnuPG工具 为了能够创建和管理GPG密钥,在Linux或macOS上通常已经预安装了`gpg`命令行工具。如果尚未安装,则可以通过包管理器来完成安装。 对于基于Red Hat的企业版Linux(RHEL)、CentOS或其他衍生版本,可以执行如下命令进行安装[^4]: ```bash yum -y install gnupg2 ``` #### 创建新的GPG密钥对 通过运行下面这条指令启动向导流程以建立一个新的密钥对: ```bash gpg --full-generate-key ``` 此过程会询问一系列选项,包括但不限于所选算法类型、密钥大小以及有效期等参数设定;之后还会请求提供个人信息如姓名、电子邮件地址作为身份标识的一部分,并最终设置一个保护该私钥的安全密码[^1]。 #### 查看已有的GPG密钥列表 一旦成功建立了所需的密钥对,就可以利用下列命令查看当前系统中存在的所有公开密钥记录: ```bash gpg --list-keys ``` 这一步骤有助于确认新产生的密钥确实存在,并从中获取必要的指纹信息以便后续操作使用[^3]。 #### 导出公钥至GitHub平台 为了让托管于GitHub上的项目支持带有签名验证特性的提交行为,还需要把刚刚制作好的公共部分上传给服务端。具体做法是先将其转换成ASCII编码形式保存在一个文本文件里,再登录网站按照指引粘贴相应内容完成关联动作: ```bash gpg --armor --export YOUR_KEY_ID > public.key ``` 这里的`YOUR_KEY_ID`应当替换为实际存在的密钥编号或者用户的邮箱地址字符串。接着访问个人资料页面下的“SSH and GPG keys”板块,点击按钮新增一条记录并将之前准备好的纯文本数据填入指定区域之中[^2]。 #### 设置Git全局环境变量 最后要做的就是告知本地Git客户端有关默认采用哪一个特定的身份来进行签署活动。编辑配置文档加入以下两行定义语句即可达成目的: ```bash git config --global user.signingkey YOUR_KEY_ID git config --global commit.gpgsign true ``` 上述更改使得今后每一次推送更新都会自动附加数字证明,从而增强了源码变更历史记录的真实性和不可抵赖属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VoidHope

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值