Home
» Hoe
»
Herstel APT-handtekeningfouten door de repositorysleutel te repareren.
Herstel APT-handtekeningfouten door de repositorysleutel te repareren.
Als APT meldt "De volgende handtekeningen konden niet worden geverifieerd", identificeer dan de repository en de specifieke foutcode in dezelfde uitvoer en herstel vervolgens de vertrouwde ondertekeningssleutel of bronvermelding van die repository. Voor een repository van een derde partij, verkrijg de huidige sleutel van de software-uitgever en koppel deze aan die bron Signed-By; schakel de handtekeningcontroles niet uit en voeg geen onbekende sleutel globaal toe.
Voorbeeld van de uitvoer van `apt update`: een foutmelding over een ontbrekende sleutel geeft de naam van de betreffende repository weer en bevat de identifier `NO_PUBKEY`.
1. Zoek de repository op en lees de exacte foutmelding.
Voer een update uit zodat u het volledige bericht kunt bekijken:
sudo apt update
Zoek naar de URL ernaast Err:en naar een token zoals NO_PUBKEY, EXPKEYSIG, KEYEXPIRED, of BADSIG. De URL geeft aan welke bron is mislukt; het token geeft aan waarom. APT controleert de ondertekende metadata van de repository voordat de pakketindex wordt vertrouwd, dus een mislukte handtekeningcontrole is een beveiligingssignaal in plaats van een cosmetische waarschuwing. Ubuntu-installaties bevatten al sleutels voor de standaard Ubuntu-archieven; handmatige sleutelconfiguratie is normaal gesproken alleen nodig voor repositories die later worden toegevoegd.
Zoek de brondefinitie door te zoeken naar de host die in de foutmelding wordt genoemd. Vervang de voorbeeldhost door de host die in je terminal wordt weergegeven:
Zoek in de APT-bronmap naar de exacte host die is gerapporteerd door de mislukte update.
Ubuntu 24.04 en latere versies gebruiken standaard deb822-bronbestanden .sources; oudere installaties hebben vaak bestanden van slechts één regel .list. Controleer de URL van de repository, de suite of Ubuntu-codenaam en eventuele bestaande Signed-Byvermeldingen. Als de bron verwijst naar een release die de leverancier niet langer ondersteunt, volg dan de instructies van de leverancier voor uw Ubuntu-release of schakel die bron uit. Een sleutel kan een verouderd of onjuist repositorypad niet corrigeren.
2. Repareer een ontbrekende of gedraaide sleutel van een derde partij.
Controleer NO_PUBKEYeerst of de repository er een is die u bewust hebt geïnstalleerd. Open de huidige installatiedocumentatie van de uitgever en haal de URL voor de ondertekeningssleutel en de volledige vingerafdruk daaruit op. Vergelijk de vingerafdruk met een afzonderlijk gepubliceerde leveranciersreferentie, indien beschikbaar. Haal geen sleutel op van een willekeurige sleutelserver alleen omdat de korte ID overeenkomt met de foutmelding.
.ascInstalleer een APT-sleutel als een aparte sleutelring voor een leverancier die een ASCII-gecodeerde sleutel publiceert . Vervang de voorbeeld-URL door de exacte URL die door die leverancier is gedocumenteerd:
Het .gpgbestand moet leesbaar zijn voor de downloadgebruiker van APT zonder beheerdersrechten. Als de uitgever een binaire .gpgsleutelring levert, volg dan de instructies in plaats van deze opnieuw te de-armoren. Ubuntu raadt aan om sleutels van derden in een aparte sleutelring te bewaren en deze door de betreffende repository te laten gebruiken, zodat alleen de bronnen die de sleutel mogen gebruiken, hiervan gebruik kunnen maken.
Een bronspecifieke 'Signed-By'-instelling zorgt ervoor dat de repository aan zijn eigen sleutelbos gekoppeld blijft.
Bewerk de bestaande brondefinitie in plaats van een dubbele vermelding toe te voegen. /etc/apt/sources.list.d/vendor.sourcesGebruik voor een deb822-bestand zoals de daadwerkelijke URI, suite en componentwaarden van de leverancier en voeg vervolgens het pad naar de sleutelring toe:
Types: deb
URIs: https://packages.example.org/ubuntu
Suites: YOUR_UBUNTU_CODENAME
Components: main
Signed-By: /etc/apt/keyrings/vendor-archive.gpg
Als de bestaande vermelding zich in een bestand van één regel bevindt .list, is de equivalente syntax deb [signed-by=/etc/apt/keyrings/vendor-archive.gpg] https://packages.example.org/ubuntu YOUR_UBUNTU_CODENAME main. Behoud de gedocumenteerde suite en componenten van de repository; de voorbeeldwaarden zijn plaatsaanduidingen. Vermijd apt-key add: deze is verouderd en een globale vertrouwde sleutel kan een sleutel van een derde partij meer bevoegdheden geven dan bedoeld.
Als het bericht aangeeft EXPKEYSIGdat KEYEXPIREDde ondertekeningssleutel is verlopen of dat de leverancier deze heeft vervangen. Download en verifieer de vervangende sleutel volgens de actuele instructies van de leverancier en werk vervolgens de sleutelring van de bron bij. Negeer de vervaldatum niet en blijf de oude sleutel niet gebruiken.
3. Controleer de klok, het Ubuntu-archief en de mirrorproblemen.
Als de repository een officieel Ubuntu-archief is, importeer dan geen sleutel van derden. Controleer of uw systeemklok correct is met timedatectl statusen bevestig dat de bron een geldige Ubuntu-archief-URL en de codenaam voor uw geïnstalleerde release gebruikt. Het ubuntu-keyringpakket levert Ubuntu-archiefondertekeningssleutels; als pakketbeheer nog steeds werkt via een vertrouwde Ubuntu-bron, vernieuw dat pakket dan met:
sudo apt install --reinstall ubuntu-keyring
Een BADSIGbericht betekent dat de handtekening niet overeenkomt met de metadata die APT heeft ontvangen. Het herhalen van een sleutelimport is meestal de verkeerde reactie. Controleer op een onjuiste systeemklok, een verouderde of inconsistente mirror, een cachingproxy of een publicatieprobleem aan de repositoryzijde; probeer het opnieuw nadat u de oorzaak hebt verholpen. Als alleen een externe bron niet werkt en u deze niet nodig hebt, schakel dan de betreffende bron .sourcesof .listvermelding uit terwijl u contact opneemt met de beheerder. Houd de beveiligingsverificatie ingeschakeld.
4. Controleer de oplossing
Nadat je de bron of sleutelring hebt gecorrigeerd, voer je apt update opnieuw uit en controleer je of er geen handtekeningfouten meer zijn.
Voer het sudo apt updateopnieuw uit. De reparatie is voltooid wanneer de betreffende repository wordt opgehaald zonder een waarschuwing over de handtekening en APT de status 'succesvol' bereikt Reading package lists... Done. Een succesvolle update garandeert niet dat een externe uitgever veilig is; het bevestigt alleen dat de metadata-handtekening overeenkomt met een sleutel die u vertrouwt. Als de verificatie nog steeds mislukt, controleer dan de repository-URL, de codenaam, de sleutelvingerafdruk, de sleutelringmachtigingen en het exacte fouttoken opnieuw voordat u een volgende wijziging aanbrengt.