Как проверить загруженный файл с файлом .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.tar.gz.sig gpg: Подпись сделана Čt 20. září 2012, 12:30:44 CEST с использованием идентификатора ключа DSA C3C45C06 gpg: Невозможно проверить подпись: Нет открытого ключа

  2. импортировать открытый ключ с сервера ключей. Обычно не требуется выбирать сервер ключей, но это можно сделать с помощью --keyserver <server>. Примеры серверов ключей.

    $ gpg --recv-key C3C45C06 gpg: запрос ключа C3C45C06 с сервера hkp keys.gnupg.net gpg: ключ C3C45C06: открытый ключ «Jakub Jelinek jakub@redhat.com» импортированный gpg: окончательно доверенных ключей не найдено gpg: общее количество обработанных : 1 гпг: импортировано: 1

Если ошибка команды истекла с тайм-аутом, возможно , вы находитесь за брандмауэром, который блокирует порт gpg по умолчанию. Попробуйте использовать параметр --keyserver с портом 80 (почти все брандмауэры разрешают порт 80 b / c для просмотра веб-страниц):

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

    $ gpg gcc-4.7.2.tar.gz.sig gpg: Подпись сделана Čt 20. září 2012, 12:30:44 CEST с использованием идентификатора ключа DSA C3C45C06 gpg: Хорошая подпись от "Jakub Jelinek jakub@redhat.com" [неизвестно ] gpg: ВНИМАНИЕ! Этот ключ не сертифицирован доверенной подписью! gpg: нет никаких указаний на то, что подпись принадлежит владельцу. Отпечаток первичного ключа: 33C2 35A3 4C46 AA3F FB29 3709 A328 C3A2 C3C4 5C06

На выходе должно быть написано «Хорошая подпись».


gpg: ВНИМАНИЕ: этот ключ не сертифицирован доверенной подписью!

Это другой вопрос;)


8
Отличное пошаговое объяснение!
Мэтью Краус,

4
В случае, если файл, требующий проверки, - это gnupg (не в вопросе), контрольные суммы SHA-1 доступны на сайте gnupg для проверки первой загрузки gnupg.
10 cls

Во время проверки подписи gpg обрабатывает архивный файл и соответствующий ему файл .sig как единое целое. Если архив отсутствует или переименован, gpg предоставляет возможность указать имя архива.
Эндрю П.

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

также, если gpg предупреждает, что «команда не указана, догадываюсь, что вы имеете в виду», используйте gpg --verify gcc-4.7.2.tar.gz.sigвместо этого.
xdavidliu

24

Этот другой способ особенно полезен для проверки проектов 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
Забавно, я здесь специально, чтобы понять, как проверить Octave! :)
Рон Дженсен - Мы все Моника

Благодарю. Я не мог найти ключ сопровождающего 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.