

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Signierung von Repository-Metadaten in AL2023
<a name="repo-metadata-signing"></a>

Ab der Veröffentlichung enthalten `2023.11.20260406` AL2023-Repositorien kryptografische Signaturen für Repository-Metadaten. Jeder `repomd.xml` Repository-Datei liegt eine separate GPG-Signaturdatei (`repomd.xml.asc`) bei, mit der Sie die Authentizität und Integrität der Repository-Metadaten überprüfen können, bevor Pakete heruntergeladen werden.

Diese Signierung erfolgt zusätzlich zur bestehenden RPM-Paketsignierung (`gpgcheck`), die einzelne Pakete verifiziert. Beim Signieren von Repository-Metadaten werden die Metadaten überprüft, die den Inhalt des Repositorys beschreiben, z. B. die Liste der verfügbaren Pakete und deren Prüfsummen.

Das Signieren von Paketen schützt jedes Package. Der Metadatenindex, der diese Pakete auflistet, ist ansonsten nur auf der Grundlage von TLS und Prüfsummen vertrauenswürdig. Ohne eine Signatur im Index könnte ein kompromittierter Spiegel oder Transportpfad modifizierte Metadaten bereitstellen, die Sicherheitsupdates verbergen oder blockieren. Das Signieren von Repository-Metadaten schließt diese Lücke und hängt nicht von Mirror oder Transport Trust ab.

## So funktioniert das Signieren von Repository-Metadaten
<a name="repo-metadata-signing-overview"></a>

Wenn AL203-Repositorys veröffentlicht werden, werden die Repository-Metadaten (`repomd.xml`) mit einem AWS KMS-Schlüssel signiert. Die daraus resultierende separate Signatur (`repomd.xml.asc`) wird neben den Metadaten im Repository platziert.

Wenn Sie die Option `repo_gpgcheck` in Ihrer Repository-Konfiguration aktivieren, DNF wird die `repomd.xml.asc` Signatur anhand des öffentlichen GPG-Schlüssels überprüft, bevor die Repository-Metadaten verwendet werden. Wenn die Überprüfung fehlschlägt, werden die Metadaten DNF zurückgewiesen und keine Paketoperationen von diesem Repository aus ausgeführt.

Wenn die Metadaten eines Repositorys zum ersten Mal DNF verifiziert werden, werden Sie aufgefordert, den Signaturschlüssel dieses Repositorys in einen Repository-spezifischen Schlüsselbund zu importieren. Diese Aufforderung ist standardmäßig auf. `No` Wenn Sie sie ablehnen, wird das Repository DNF übersprungen. Weitere Informationen zu `repo_gpgcheck` finden Sie in der [DNFKonfigurationsreferenz.](https://dnf.readthedocs.io/en/latest/conf_ref.html)

Dies ist derselbe Schlüssel, der bereits für die Paketverifizierung verwendet wurde, er wird jedoch in einem separaten Schlüsselbund für Metadatenprüfungen DNF gespeichert. Sie werden zur Bestätigung aufgefordert, obwohl sich der Schlüssel bereits auf der Festplatte befindet. Dieses DNF Verhalten wird erwartet.

Die folgenden AL203-Repositorien enthalten signierte Metadaten:
+ Kern-Repository () `amazonlinux`
+ Kernel-Livepatch-Repository () `kernel-livepatch`
+ NVIDIA-Repository () `amazonlinux-nvidia`
+ Zusätzliche Pakete für das Amazon Linux-Repository (`amazonlinux-spal`)

## `Unterschied zwischen gpgcheck und repo_gpgcheck`
<a name="repo-metadata-signing-gpgcheck-vs-repo-gpgcheck"></a>


| Einstellung | Was verifiziert es | Standard in AL2023 | 
| --- | --- | --- | 
| gpgcheck=1 | Überprüft vor der Installation die GPG-Signatur einzelner RPM-Pakete. | Aktiviert | 
| repo\_gpgcheck=1 | Überprüft die GPG-Signatur der Repository-Metadaten (repomd.xml), bevor das Repository verwendet wird. | Standardmäßig deaktiviert | 

Wir empfehlen Ihnen, beide zu aktivieren `gpgcheck` und`repo_gpgcheck`, nachdem Sie bestätigt haben, dass Ihre Automatisierung bereit ist. Dadurch werden sowohl die Repository-Metadaten als auch die einzelnen Pakete vor der Verwendung überprüft. Bevor Sie die Aktivierung durchführen`repo_gpgcheck`, finden Sie weitere Informationen unter[Verwenden Sie die Überprüfung von Repository-Metadaten zur Automatisierung](#repo-metadata-signing-automation).

## Überprüfung der Repository-Metadaten aktivieren
<a name="repo-metadata-signing-enable"></a>

Sie können die Überprüfung von Repository-Metadaten für einzelne Repositorys aktivieren, indem Sie deren Konfigurationsdateien aktualisieren.

**Wichtig**  
Die Überprüfung der Signatur von Repository-Metadaten ist standardmäßig nicht aktiviert. Sie bleibt deaktiviert, bis Sie sie ändern. Bevor Sie es aktivieren, stellen Sie sicher, dass jeder unbeaufsichtigte DNF Befehl in Ihrer Automatisierung die `-y` Option erfüllt. Weitere Informationen finden Sie unter [Verwenden Sie die Überprüfung von Repository-Metadaten zur Automatisierung](#repo-metadata-signing-automation).

### Für ein bestimmtes Repository aktivieren
<a name="repo-metadata-signing-enable-per-repo"></a>

Die AL203-Repository-Konfigurationsdateien sind `repo_gpgcheck=0` standardmäßig `/etc/yum.repos.d/` festgelegt. Um die Überprüfung der Repository-Metadaten zu aktivieren, ändern Sie diesen Wert `1` in der Repository-Konfiguration auf. Um ihn beispielsweise für das Core-Repository zu aktivieren, gehen Sie wie folgt vor:

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

### Deaktivieren Sie die Überprüfung der Repository-Met
<a name="repo-metadata-signing-disable"></a>

Um zum vorherigen Verhalten zurückzukehren, legen Sie es `repo_gpgcheck=0` in der Repository-Konfigurationsdatei fest. Die nächste Aktualisierung der Metadaten ist ohne Überprüfung erfolgreich.

```
[ec2-user ~]$ sudo sed -i 's/^repo_gpgcheck=1/repo_gpgcheck=0/' /etc/yum.repos.d/amazonlinux.repo
[ec2-user ~]$ sudo dnf -y makecache
```

## Es wird überprüft, ob das Signieren von Repository-Metadaten funktioniert
<a name="repo-metadata-signing-verify"></a>

Nach der Aktivierung können Sie überprüfen`repo_gpgcheck=1`, ob die Überprüfung der Metadaten funktioniert, indem Sie den DNF Cache leeren und die Metadaten aktualisieren:

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

Bei der ersten DNF Überprüfung der Metadaten für ein Repository werden Sie aufgefordert, den Signaturschlüssel dieses Repositorys zu importieren. Geben Sie `y` zur Bestätigung ein. DNFErstellt nach dem Import des Schlüssels den Metadaten-Cache ohne Fehler. Die Ausgabe entspricht weitgehend der Folgenden:

```
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
Is this ok [y/N]: y
Amazon Linux 2023 repository                      18 MB/s |  55 MB     00:03
Metadata cache created.
```

Die Importaufforderung ist standardmäßig auf`No`. Wenn Sie sie ablehnen, werden das Repository und die Berichte `Ignoring repositories` in der Ausgabe DNF übersprungen. Schlägt die Überprüfung fehl, DNF meldet es einen GPG-Signaturfehler und erstellt den Cache nicht.

Informationen zu unbeaufsichtigten Läufen finden Sie unter. [Verwenden Sie die Überprüfung von Repository-Metadaten zur Automatisierung](#repo-metadata-signing-automation)

## Verwenden Sie die Überprüfung von Repository-Metadaten zur Automatisierung
<a name="repo-metadata-signing-automation"></a>

**Anmerkung**  
Die Schlüsselimportaufforderung ist standardmäßig auf`No`. Bei einer unbeaufsichtigten DNF Ausführung kann die Aufforderung nicht beantwortet werden. Daher wird der Import abgelehnt und das Repository übersprungen. Da AL2023 gesetzt wird`skip_if_unavailable=True`, wird der Befehl immer noch mit Status beendet. `0` Infolgedessen meldet die Automatisierung einen Erfolg, während der Host keine Pakete oder Updates erhält. Das Zeichen dafür ist `Ignoring repositories` in der Ausgabe zu sehen.

Um dies zu verhindern, übergeben Sie die `-y` Option an jeden unbeaufsichtigten DNF Befehl, der Metadaten aktualisiert, einschließlich Continuous Integration-Jobs, Image- und Container-Builds`cloud-init`, Konfigurationsmanagement und Cron-Jobs.

```
[ec2-user ~]$ sudo dnf -y makecache
[ec2-user ~]$ sudo dnf -y check-update
[ec2-user ~]$ sudo dnf -y upgrade
```

Befehle, die Metadaten aktualisieren müssen. `-y` Befehle, die nur den lokalen Cache oder die lokale RPM-Datenbank lesen oder die diese `-C` Option verwenden, aktualisieren keine Metadaten und geben keine Eingabeaufforderung aus. Eine vollständige Liste finden Sie unter [Befehle, die Repository-Metadaten aktualisieren](#repo-metadata-signing-command-reference).

Behalten `-y` Sie Ihre Automatisierung dauerhaft bei. Der Schlüssel wird einmal pro Repository-URL importiert, nicht einmal pro Host. AL2023 erstellt jede Repository-URL aus der gesperrten Version (`releasever`) und der AWS Region, sodass ein Betriebssystem-Versions-Upgrade oder eine Regionsänderung zu einer neuen URL aufgelöst wird und erneut gefragt wird. Der Signaturschlüssel ändert sich nicht, sondern nur die Position des Schlüsselbundes. Verwenden Sie den Schlüssel nicht als einmaliges Problem im Voraus, da beim nächsten Versionsupgrade oder bei der nächsten Region ein neuer Schlüsselbund verwendet wird und Sie erneut aufgefordert werden.

Beim Ausführen `dnf clean all` werden die zwischengespeicherten Metadaten gelöscht, der importierte Schlüssel innerhalb derselben Version jedoch nicht entfernt. Die Aufforderung wird dadurch nicht erneut ausgelöst.

Container-Image-Builds erfordern besondere Aufmerksamkeit. Jeder `RUN dnf` Schritt bei der Image-Erstellung erfolgt unbeaufsichtigt, und der Schlüsselbund ist Teil des Image-Dateisystems, sodass er in jedem neuen Image leer beginnt. Die Aufforderung erscheint während des Builds, unabhängig davon, was Ihre laufenden Hosts bereits importiert haben. Übergeben Sie `-y` Image-Builds.

**Anmerkung**  
Wenn Sie DNF als Python-Bibliothek (`import dnf`) fahren, gilt die Aufforderung nicht. Die Bibliothek importiert den Schlüssel ohne Aufforderung, sodass Metadaten ohne `-y` Aufforderung geladen werden.

## Befehle, die Repository-Metadaten aktualisieren
<a name="repo-metadata-signing-command-reference"></a>

Jeder Befehl, der Repository-Metadaten herunterlädt oder aktualisiert, löst den Schlüsselimport und die Aufforderung aus. Befehle, die nur den lokalen Cache oder die lokale RPM-Datenbank lesen, tun dies nicht. Optionen ändern das Ergebnis: So wird beispielsweise der `-v` Befehl `repolist` fetch, keep `--installed` `list` und `info` local ausgeführt `-C` oder der Abruf `--cacheonly` wird vermieden und `--refresh` erzwungen. Bestehen Sie im Zweifelsfall. `-y`


| Befehl | Aktualisiert Metadaten | 
| --- | --- | 
| dnf makecache | Ja | 
| dnf check-update | Ja | 
| dnf upgrade, dnf update | Ja | 
| dnf upgrade-minimal | Ja | 
| dnf distro-sync | Ja | 
| dnf install | Ja | 
| dnf reinstall | Ja | 
| dnf downgrade | Ja | 
| dnf autoremove | Ja | 
| dnf swap | Ja | 
| dnf list(Standard oder--available) | Ja | 
| dnf info(Standard oder--available) | Ja | 
| dnf search | Ja | 
| dnf provides | Ja | 
| dnf repoquery | Ja | 
| dnf repoinfo | Ja | 
| dnf deplist | Ja | 
| dnf repository-packages | Ja | 
| dnf updateinfo | Ja | 
| dnf group(Liste, Info, Installation) | Ja | 
| dnf module(Liste, Information) | Ja | 
| dnf shell(wenn seine Unterbefehle fetch | Ja | 
| dnf builddep | Ja | 
| dnf changelog | Ja | 
| dnf debuginfo-install | Ja | 
| dnf download | Ja | 
| dnf repoclosure | Ja | 
| dnf repograph | Ja | 
| dnf reposync | Ja | 
| dnf debug-dump | Ja | 
| dnf repolist -v(ausführlich) | Ja | 
| dnf repolist(schlicht oder--all) | Nein | 
| dnf list --installed, dnf info --installed | Nein | 
| dnf remove, dnf erase | Nein | 
| dnf mark | Nein | 
| dnf history | Nein | 
| dnf check | Nein | 
| dnf clean | Nein | 
| dnf config-manager | Nein | 
| dnf needs-restarting | Nein | 
| dnf alias | Nein | 
| dnf help | Nein | 
| dnf repomanage | Nein | 
| dnf repodiff | Nein (Fehler, sofern nicht zwei Repositorys benannt sind) | 
| dnf copr | Nein | 
| dnf groups-manager | Nein | 
| dnf playground | Nein | 
| dnf debug-restore | Nein (wirkt auf einen gespeicherten Speicherauszug) | 
| Irgendein Befehl mit -C oder --cacheonly | Nein | 

Ein auf diese Weise übersprungenes Repository wird wie `Ignoring repositories` in der Ausgabe gemeldet, aber die meisten dieser Befehle werden trotzdem mit dem Status beendet, `0` weil AL2023 setzt. `skip_if_unavailable=True` Verlassen Sie sich nicht nur auf den Exit-Code. Beenden Sie den Vorgang, `-y` damit der Schlüsselimport erfolgreich ist.

## Erkennt ein übersprungenes Repository
<a name="repo-metadata-signing-detect"></a>

Der Exit-Code allein bestätigt nicht, dass die Überprüfung erfolgreich war. Ein übersprungenes Repository wird beendet`0`, und der Signaturschlüssel bleibt bestehen, sobald er von einem Lauf importiert wurde, sodass eine spätere Prüfung erfolgreich sein kann, während ein früherer Schritt immer noch fehlschlägt. Verwenden Sie stattdessen diese beiden Prüfungen:
+ Prüfen Sie Ihre Automatisierung. Vergewissern Sie sich, dass jeder Befehl zum Abrufen von Metadaten erfolgreich DNF ist. `-y` Das ist es, was Sie dazu bringt, an der nächsten neuen Repository-URL zu arbeiten.
+ Überprüfen Sie die Ausgabe für`Ignoring repositories`. Der folgende Befehl schlägt fehl, wenn das Repository übersprungen wird. Mit diesem Befehl können Sie eine Pipeline ausfallen lassen:

```
[ec2-user ~]$ sudo dnf makecache 2>&1 | grep -q "Ignoring repositories" && { echo "repo skipped"; exit 1; }
```

## Angeheftete Versionen
<a name="repo-metadata-signing-pinned"></a>

Wenn Sie `releasever` (mit `--releasever``/etc/dnf/vars/releasever`, oder`dnf.conf`) an eine zuvor veröffentlichte Version anheften`2023.11.20260406`, hat diese Version keine Signaturdatei und das Repository `repo_gpgcheck=1` kann nicht aktualisiert werden:

```
Error: Failed to download metadata for repo 'amazonlinux':
GPG verification is enabled, but GPG signature is not available...
```

Eine angeheftete Version erhält keine Updates, die über diese Version hinausgehen. Wenn Sie eine Anheftung vornehmen, an eine Version `2023.11.20260406` oder eine neuere Version anheften oder festlegen`repo_gpgcheck=0`.

## Öffentliche GPG-Schlüssel für AL203-Repositorien
<a name="repo-metadata-signing-gpg-keys"></a>

Die öffentlichen GPG-Schlüssel, die für die Überprüfung der Repository-Metadaten verwendet werden, werden von den entsprechenden Repository-Konfigurations-RPMs auf installiert. `/etc/pki/rpm-gpg/` In der folgenden Tabelle sind die öffentlichen Schlüssel aufgeführt, die von den einzelnen Repositorien verwendet werden.


| Repository | Schlüssel zum Signieren von Paketen | Repodata-Signaturschlüssel | Verteilt in | 
| --- | --- | --- | --- | 
| Kern (amazonlinux) | RPM-GPG-KEY-amazon-linux-2023 | RPM-GPG-KEY-amazon-linux-2023 | system-release | 
| Kernel-Live-Patch () 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 | 

Diese Schlüssel werden automatisch installiert, wenn Sie das entsprechende RPM für die Repository-Konfiguration installieren.