

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 存储库元数据登录 AL2023
<a name="repo-metadata-signing"></a>

从发布开始`2023.11.20260406`， AL2023 存储库包括存储库元数据的加密签名。每个存储库`repomd.xml`的文件都附有一个分离的 GPG 签名文件 (`repomd.xml.asc`)，您可以在下载软件包之前使用该文件来验证存储库元数据的真实性和完整性。

此签名是对现有 RPM 包签名 (`gpgcheck`) 的补充，后者可以验证各个软件包。存储库元数据签名验证描述存储库内容的元数据，例如可用软件包列表及其校验和。

## 仓库元数据签名的工作原理
<a name="repo-metadata-signing-overview"></a>

发布 AL2023 存储库时，将使用 Amazon KMS 密钥对存储库元数据 (`repomd.xml`) 进行签名。生成的分离签名 (`repomd.xml.asc`) 放在存储库中的元数据旁边。

当您在存储库配置`repo_gpgcheck`中启用时，在使用存储库元数据之前，DNF会自动下载并根据 GPG 公钥验证`repomd.xml.asc`签名。如果签名验证失败，则DNF拒绝存储库元数据，并且不会继续从该存储库执行包操作。有关的更多信息`repo_gpgcheck`，请参阅《[DNF配置参考](https://dnf.readthedocs.io/en/latest/conf_ref.html)》。

以下 AL2023 存储库包含已签名的元数据：
+ 核心存储库 (`amazonlinux`)
+ 内核 Livepatch 存储库 () `kernel-livepatch`
+ NVIDIA 存储库 (`amazonlinux-nvidia`)
+ 亚马逊 Linux 存储库的补充软件包 (`amazonlinux-spal`)

## 和之间的`gpgcheck`区别 `repo_gpgcheck`
<a name="repo-metadata-signing-gpgcheck-vs-repo-gpgcheck"></a>


| 设置 | 它验证了什么 | 默认为 AL2023 | 
| --- | --- | --- | 
| gpgcheck=1 | 安装前验证各个 RPM 软件包的 GPG 签名。 | 已启用 | 
| repo\_gpgcheck=1 | 在使用存储库之前，请验证存储库元数据 (repomd.xml) 的 GPG 签名。 | 已禁用（默认情况下从2023.12季度版本开始启用） | 

我们强烈建议您同时启用`gpgcheck`和`repo_gpgcheck`。这样可以确保存储库元数据和各个软件包在使用前都经过验证。

## 启用仓库元数据验证
<a name="repo-metadata-signing-enable"></a>

您可以通过更新各个存储库的配置文件来为其启用存储库元数据验证。

**重要**  
从`2023.12`季度版本开始，`repo_gpgcheck=1`将在 AL2023 存储库配置文件中默认启用。

### 为特定存储库启用
<a name="repo-metadata-signing-enable-per-repo"></a>

默认情况下， AL2023 存储库配置文件处于`/etc/yum.repos.d/`设置`repo_gpgcheck=0`状态。要启用存储库元数据验证，请在存储库配置`1`中将此值更改为。例如，要为核心存储库启用它，请执行以下操作：

```
[amazonlinux]
name=Amazon Linux 2023 repository
...
gpgcheck=1
repo_gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-linux-2023
```

## 验证存储库元数据签名是否正常工作
<a name="repo-metadata-signing-verify"></a>

启用后`repo_gpgcheck=1`，您可以通过清除DNF缓存并刷新元数据来验证元数据验证是否正常工作：

```
[ec2-user ~]$ sudo dnf clean metadata
[ec2-user ~]$ sudo dnf makecache
```

如果元数据验证成功，则DNF导入 GPG 密钥（如果尚未导入）并创建元数据缓存而不会出现错误。可以看到类似以下内容的输出：

```
Amazon Linux 2023 repository                    1.7 MB/s | 1.8 kB     00:00
Importing GPG key 0xD832C631:
 Userid     : "Amazon Linux <amazon-linux@amazon.com>"
 Fingerprint: B21C 50FA 44A9 9720 EAA7 2F7F E951 904A D832 C631
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-linux-2023
Amazon Linux 2023 repository                      18 MB/s |  55 MB     00:03
Metadata cache created.
```

如果签名验证失败，则DNF会显示一条错误消息，指示 GPG 签名验证失败，元数据缓存创建失败。

## 存储库的 GPG 公 AL2023 钥
<a name="repo-metadata-signing-gpg-keys"></a>

用于存储库元数据验证的 GPG 公钥由相应的存储库配置安装 RPMs 到。`/etc/pki/rpm-gpg/`下表列出了每个存储库使用的公钥。


| Repository | Package 签名密钥 | Repodata 签名密钥 | 分布在 | 
| --- | --- | --- | --- | 
| 核心 (amazonlinux) | RPM-GPG-KEY-amazon-linux-2023 | RPM-GPG-KEY-amazon-linux-2023 | system-release | 
| 内核 LivePatch () kernel-livepatch | RPM-GPG-KEY-amazon-linux-2023 | RPM-GPG-KEY-amazon-linux-2023 | system-release | 
| 英伟达 (amazonlinux-nvidia) | RPM-GPG-KEY-NVIDIA-D42D0685 | RPM-GPG-KEY-amazon-linux-2023-nvidia | nvidia-release | 
| SPAL () amazonlinux-spal | RPM-GPG-KEY-amazonlinux-spal | RPM-GPG-KEY-amazonlinux-spal | spal-release | 

当您安装相应的存储库配置 RPM 时，会自动安装这些密钥。