

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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 儲存庫時，會使用 AWS 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`)
+ Kernel Livepatch 儲存庫 (`kernel-livepatch`)
+ NVIDIA 儲存庫 (`amazonlinux-nvidia`)
+ Amazon 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>

預設`/etc/yum.repos.d/`設定 中的 AL2023 儲存庫組態檔案`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 簽章驗證失敗且中繼資料快取建立失敗。

## AL2023 儲存庫的 GPG 公有金鑰
<a name="repo-metadata-signing-gpg-keys"></a>

用於儲存庫中繼資料驗證的 GPG 公有金鑰由對應的儲存庫組態 RPMs 安裝至 `/etc/pki/rpm-gpg/`。下表列出每個儲存庫使用的公有金鑰。


| 儲存庫 | 套件簽署金鑰 | Repodata 簽署金鑰 | 在 中分佈 | 
| --- | --- | --- | --- | 
| 核心 (amazonlinux) | RPM-GPG-KEY-amazon-linux-2023 | RPM-GPG-KEY-amazon-linux-2023 | system-release | 
| Kernel Livepatch (kernel-livepatch) | RPM-GPG-KEY-amazon-linux-2023 | RPM-GPG-KEY-amazon-linux-2023 | system-release | 
| NVIDIA (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 時，會自動安裝這些金鑰。