纠正我哪里错了。有公钥和私钥(或秘密)。公钥和私钥组成密钥对。一些密钥对绑定到其他密钥对。前者称为子键,后者称为主(或主)键。尽管它们被称为密钥,但它们实际上是密钥对。
钥匙圈是文件。gpg-1.4.18默认情况下会创建两个pubring.gpg密钥环:public ( ) 和 secret ( secring.gpg)。公钥进入公钥环,私有密钥环。
让我们来看看/etc/apt/trusted.gpg:
$ gpg /etc/apt/trusted.gpg
pub 4096R/68576280 2014-06-13 NodeSource <gpg@nodesource.com>
sub 4096R/AA01DA2C 2014-06-13
pub 4096R/86E50310 2016-10-05 Yarn Packaging <yarn@dan.cx>
sub 4096R/D50AF136 2016-10-05
sub 4096R/9D41F3C3 2016-10-05 [expires: 2017-10-05]
sub 4096R/FD2497F5 2016-10-30 [expires: 2019-01-01]
sub 4096R/B6FF4DE3 2017-09-10 [expires: 2019-01-01]
sub 4096R/88B63E1E 2019-01-02 [expires: 2020-02-02]
sub 4096R/69475BAA 2019-01-11 [expires: 2020-02-02]
pub 3072R/95BD4743 2019-03-18 DEB.SURY.ORG Automatic Signing Key <deb@sury.org>
sub 3072R/8059B8AC 2019-03-18 [expires: 2021-03-17]
考虑 Yarn Packaging 键及其子键。首先,列出的所有密钥都是公共密钥。它的公钥有6个公共子密钥。假设,第一个子项没有指定到期日期。
现在,如果我这样做:
$ gpg -k --keyring /etc/apt/trusted.gpg
/etc/apt/trusted.gpg
--------------------
pub 4096R/68576280 2014-06-13
uid NodeSource <gpg@nodesource.com>
sub 4096R/AA01DA2C 2014-06-13
pub 4096R/86E50310 2016-10-05
uid Yarn Packaging <yarn@dan.cx>
sub 4096R/D50AF136 2016-10-05
sub 4096R/88B63E1E 2019-01-02 [expires: 2020-02-02]
sub 4096R/69475BAA 2019-01-11 [expires: 2020-02-02]
pub 3072R/95BD4743 2019-03-18 [expires: 2021-03-17]
uid DEB.SURY.ORG Automatic Signing Key <deb@sury.org>
sub 3072R/8059B8AC 2019-03-18 [expires: 2021-03-17]
我只能看到 Yarn Packaging 的第一个和最后两个键。(1)为什么它不显示所有的键?还有uid一行显示用户 ID,这基本上是一个键名。正如我所说,trusted.gpg只包含公钥。
但是apt对于一个显示更长的密钥ID。(2)为什么会这样?
W:GPG错误:https : //dl.yarnpkg.com stable InRelease:以下签名无法验证,因为公钥不可用:NO_PUBKEY 23E7166788B63E1E
让我们看一下我为撰写本文而生成的密钥:
$ gpg -k
/root/.gnupg/pubring.gpg
------------------------
pub 2048R/454A8AB5 2019-03-25
uid Temporary Key (Comment to the Temporary Key) <temporary.key@gmail.com>
sub 2048R/763C1752 2019-03-25
$ gpg -K
/root/.gnupg/secring.gpg
------------------------
sec 2048R/454A8AB5 2019-03-25
uid Temporary Key (Comment to the Temporary Key) <temporary.key@gmail.com>
ssb 2048R/763C1752 2019-03-25
所以我有两个密钥对,或 4 个密钥。一个主(或主)密钥(或密钥对)。和一个子密钥(或子密钥对)。公共密钥环中有 2 个(公共)密钥,秘密密钥中有 2 个(私有)密钥。(3)为什么我会自动获取子键?
pub - public key
sub - subkey
sec - private (or secret) key
ssb - private (or secret) subkey
uid - user id
(4)是否有其他方式显示按键信息?