签名密钥和更新

属于Fedora和Fedora CoreOS(FCOS)的所有二进制构件、OSTREE提交和OS映像都通过gpg签名。当前的可信签名密钥集位于 https://getfedora.org/security/.

关键点旋转和更新障碍

在每个新的Fedora主要发布周期开始时,都会生成一个新的签名密钥,并将其公共部分发布在Fedora网站上。新密钥稍后将用于对新构件进行签名,取代当前使用的密钥。这样做是为了建立从较旧版本到较新版本的自动信任链,该较新版本可能由不同的较新密钥签名。

为了使Fedora CoreOS的自动更新在主要的Fedora版本中工作,上述嵌入的签名密钥集每个Fedora发布周期至少刷新一次。当发生这种情况时,将在FCOS更新图中设置更新屏障。

设置这种更新障碍的主要原因是确保旧的(可能是陈旧的)实例自动接收和信任新生成的密钥。这是通过强制此类计算机在跳转到最新发布的版本之前逐步赶上中间更新(由已受信任的密钥签名)来实现的。

示例

以Fedora 32发布周期为例,在一开始,FCOS镜像只知道32和33个专业的签名密钥:

$grep OSTREE/ETC/OS-Release OSTREE_VERSION='32.20200615.3.0'

$ls-v/usr/etc/pki/rpm-gpg/*PRIMARY|Tail-3 /usr/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-31-primary /usr/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-32-primary /usr/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-33-primary

在该发布周期的后期,将为未来的Fedora 34版本生成签名密钥,并将其添加到FCOS中。在FCOS更新图中设置障碍,例如在发布时 32.20200907.3.0 。查看该图像会显示以下内容:

$grep OSTREE/ETC/OS-Release OSTREE_VERSION='32.20200907.3.0'

$ls-v/usr/etc/pki/rpm-gpg/*PRIMARY|Tail-3 /usr/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-32-primary /usr/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-33-primary /usr/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-34-primary

设置此障碍后,较旧的实例必须首先升级到 32.20200907.3.0 以确保他们知道(并信任)Fedora 34的签名密钥,然后才能在此基础上升级到新版本。