Podczas aktualizacji pewnego serwerka ‘postawionego’ na Debianie, natknąłem się na pewien problem związany z kluczem publicznym. Zacząłem więc grzebać aby cokolwiek znaleźć aby pokonać problem, myślę że ten krótki wpis ułatwi życie potomnym

Co tak naprawdę się stało?

Podczas wpisania komendy apt-get update konsola zwróciła mi komunikat:

 Bash |  copy code |? 
GPG error: ftp://www.hk.debian.org unstable Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY id_klucza

Dlaczego się tak dzieje? Powodem tego jest to iż nowe wersje apt-get wymagają weryfikacji autentyczności ściąganych pakietów w tym celu używają GPG.

Czym taki jest ów GPG?
Jest to oprogramowanie kryptograficzne używane do szyfrowania danych. Szyfrowanie odbywa się za pomocą asymetrycznych par kluczy generowanych dla poszczególnych użytkowników i to właśnie te klucze muszą być odpowiednio zdefiniowane. Po więcej informacji odsyłam do Wikipedia:GPG.

Aby pobrać klucze w linie poleceń w konsoli wpisujemy następujące komendy:

 Bash |  copy code |? 
gpg --keyserver wwwkeys.eu.pgp.net --recv-keys id_klucza

Wyjaśnienie:

  • --keyserver – adres serwera skąd maja być pobierane klucze weryfikacyjne
  • --recv-keys – importuje klucze dla podanego ID

Kolejnym krokiem jest dodanie pobranych kluczy:

 Bash |  copy code |? 
gpg --armor --export id_klucza | apt-key add -

Wyjaśnienie:

  • --armor – dodaje zabezpieczony kod ASCII domyślnie w formacie OpenPGP
  • --export – eksportuje podany klucz
  • apt-key add – dodaje podany klucz do polecenie apt-

Podsumowanie
Czyli jeśli dostaniemy następujący błąd:

 Bash |  copy code |? 
W: GPG error: ftp://www.hk.debian.org unstable Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F1D53D8C4F368D5D

pierwsze wpisujemy:

 Bash |  copy code |? 
gpg --keyserver wwwkeys.eu.pgp.net --recv-keys F1D53D8C4F368D5D

i kolejno

 Bash |  copy code |? 
gpg --armor --export F1D53D8C4F368D5D | apt-key add -