github: PGP 密钥使用标志不允许签名

github: PGP key usage flags do not allow signing

我已经使用我的 OpenPGP 密钥签署了一个 git 提交,但它在 github 上显示为 "Unverified":https://github.com/cweiske/jsonmapper/commits/master

The usage flags for the key that signed this don't allow signing.

GPG key ID: 14C85A0824EAF823

github gpg signature docs 未提及该错误。

所以我的问题:

  1. 如何阅读这些标志?
  2. 如何更改我的密钥以允许代码签名?

你可以看看你的签名能力by either looking at the output of --edit-key or GnuPG's colon-separated output

查看您的密钥,我发现您有一堆过期的子密钥(一些具有签名功能)和一个设置了签名和认证功能的主密钥。主键的有效期延长了两次(也可以考虑阅读有关此主题的 "Does OpenPGP key expiration add to security?")。

我在这里看到两个可能的问题:

  • GitHub 还没有您的 public 密钥的最新副本。因此,发出签名的密钥不被视为签名密钥,因为它似乎已过期到 GitHub。不过,错误消息是错误的,GitHub 应该告诉您密钥已过期。上传更新的密钥副本应该可以解决问题。
  • GitHub 软件中存在一个错误,导致它在签名子密钥存在时忽略主密钥(无论它们是否过期)。