Як перевірити завантажений файл за допомогою файлу .sig?


85

Коли я завантажую GCC, він також має .sigфайл, і я думаю, що він надається для перевірки завантаженого файлу. (Я завантажив GCC звідси ).

Але я не можу зрозуміти, як мені це використовувати. Я спробував gpg, але він скаржиться на відкритий ключ.

[root@localhost src]# gpg --verify gcc-4.7.2.tar.gz.sig gcc-4.7.2.tar.gz
gpg: Signature made Thu 20 Sep 2012 07:30:44 PM KST using DSA key ID C3C45C06
gpg: Can't check signature: No public key
[root@localhost src]# 

Як я можу перевірити завантажений файл із .sigфайлом?

Відповіді:


98

Вам потрібно імпортувати відкритий ключ: C3C45C06

Це можна зробити в три етапи.

  1. знайти ідентифікатор відкритого ключа:

    $ gpg gcc-4.7.2.

  2. імпортувати відкритий ключ із сервера ключів. Зазвичай не потрібно вибирати сервер ключів, але це можна зробити за допомогою --keyserver <server>. Приклади серверів ключів.

    $ gpg --recv-ключ C3C45C06 gpg: запит ключа C3C45C06 від ключів сервера hkp.gnupg.net gpg: ключ C3C45C06: відкритий ключ "Jakub Jelinek jakub@redhat.com" імпортований gpg: кінцевих надійних ключів не знайдено gpg: Загальна кількість оброблених : 1 gpg: імпортований: 1

Якщо помилка команди вичерпана з таймаутом, ви можете знаходитись за брандмауером, який блокує порт gpg за замовчуванням. Спробуйте скористатися опцією `--keyserver 'з портом 80 (майже всі брандмауери дозволяють порт 80 b / c веб-перегляду):

$ gpg --keyserver hkp://${HOSTNAME}:80 --recv-keys ${KEY_ID}
  1. перевірити підпис:

    $ gpg gcc-4.7.2. ] gpg: ПОПЕРЕДЖЕННЯ: Цей ключ не засвідчений надійним підписом! gpg: немає жодних ознак належності підпису власнику. Відбиток первинного ключа: 33C2 35A3 4C46 AA3F FB29 3709 A328 C3A2 C3C4 5C06

На виході має бути написано "Хороший підпис".


gpg: ПОПЕРЕДЖЕННЯ: Цей ключ не засвідчений надійним підписом!

Є для іншого питання;)


8
Чудове покрокове пояснення!
Метью Краус,

4
Якщо файлом, що вимагає перевірки, є gnupg (не йдеться про питання), контрольні суми SHA-1 доступні на сайті gnupg для перевірки першого завантаження gnupg.
10 кліків

Під час перевірки підпису gpg обробляє файл tarball та відповідний файл .sig як одиницю. Якщо tarball відсутній або перейменований, gpg надає можливість вказати назву tarball.
Ендрю П.

У мене є ключ RSA, і він не працює без --keyserverцього списку або з ним , його отримує лише один, але, здається, йому не довіряють, це дивно, оскільки я його приміряю GNU coreutils- це широко використовуваний пакет.
user10089632

також, якщо gpg попереджає "жодна команда не введена, вгадуючи, що ви маєте на увазі", використовуйте gpg --verify gcc-4.7.2.tar.gz.sigзамість цього.
xdavidliu

23

Цей інший шлях особливо корисний для перевірки проектів GNU (наприклад, Octave ), оскільки ключ, запитуваний їх підписом, може бути не знайдений на жодному сервері ключів.

З http://ftp.gnu.org/README

Існують також файли .sig, які містять від’єднані підписи GPG вищезазначених файлів, автоматично підписані тим самим сценарієм, який їх генерує.

Ви можете перевірити підписи для файлів проекту gnu за допомогою файлу ключів із:

https://ftp.gnu.org/gnu/gnu-keyring.gpg

У каталозі з файлом ключів, вихідним файлом для перевірки та файлом підпису використовується команда:

$ gpg --verify --keyring ./gnu-keyring.gpg foo.tar.xz.sig


3
Але якщо ми говоримо про безпеку, то краще використовувати з'єднання HTTPS: https://ftp.gnu.org/gnu/gnu-keyring.gpg
Максим

3
Смішно, я тут явно, щоб зрозуміти, як перевірити октаву! :)
Рон Дженсен - Ми всі Моніка

Дякую. Я не зміг знайти ключ супровідника Bash на будь-якому сервері ключів, але саме це мені потрібно для перевірки підпису вихідного коду.
Ентоні Геогеган,

1
Що стосується октави, дивіться відповідь про програму gpg4win тут: superuser.com/questions/1268544/…
Мартін,

1

Вам потрібно шукати на відкритих серверах ключів вказаний ідентифікатор ключа: у вашому випадку ID C3C45C06 імпортуйте знайдений ключ у місцевому сховищі ключів, і після цього перевірка повинна бути в порядку. Я використовую Ubuntu 12.04, і він постачається з програмним забезпеченням для управління ключами Seahorse. До імпорту ключа я бачив таке:

~/Downloads$ gpg --verify --keyring ./gnu-keyring.gpg icecat-31.5.0.en-US.linux-x86_64.tar.bz2.sig icecat-31.5.0.en-US.linux-x86_64.tar.bz2
gpg: Signature made  9.03.2015 (пн) 22,35,52 EET using RSA key ID D7E04784
gpg: Can't check signature: public key not found

Після імпорту ключа я бачив таке:

~/Downloads$ gpg --verify --keyring ./gnu-keyring.gpg icecat-31.5.0.en-US.linux-x86_64.tar.bz2.sig icecat-31.5.0.en-US.linux-x86_64.tar.bz2
gpg: Signature made  9.03.2015 (пн) 22,35,52 EET using RSA key ID D7E04784
gpg: Good signature from "Ruben Rodriguez (GNU IceCat releases key) <ruben@gnu.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: A573 69A8 BABC 2542 B5A0  368C 3C76 EED7 D7E0 4784

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.