pacman-key (Русский)
pacman-key — это новая утилита, входящая в pacman 4. Она позволяет пользователю управлять списком доверенных ключей для менеджера пакетов pacman, используя новую реализацию подписи пакетов. Для дополнительных сведений смотрите блогозаписи [1][2][3][4] и вики-страницу package signing proposal.
Contents
Общий обзор ключей и отпечатков
PGP-ключ позволяет разработчику однозначно подписать свой пакет, гарантируя, что пакет сделал именно он, а не кто-то, кто выдает себя за разработчика.
Отпечаток или идентификатор ключа
- Отпечаток — это короткое представление ключа, которое может использоваться для его идентификации, не показывая при этом весь ключ (иногда очень длинный). Это что-то вроде "имени" ключа. В документации pacman его называют идентификатором ключа (keyid).
- Форматы отпечатков
- Отпечатки формата "6645 B0A8 C700 5E78 DB1D 7864 F99F FE0F EAE9 99BD" требуют сжатия путем удаления пробелов: "6645B0A8C7005E78DB1D7864F99FFE0FEAE999BD"
- Приставка "0x" необязательна. Её присутствие не влияет на корректную работу.
Серверы ключей
- Серверы PGP-ключей хранят файлы ключей и позволяют искать ключи по их отпечаткам. Указать сервер ключей можно опцией
--keyserver
. - hkp://pgp.mit.edu:11371 является одним из серверов PGP-ключей, который используют разработчики Archlinux.
- Стандартный сервер ключей может быть изменен в файле
/etc/pacman.d/gnupg/gpg.conf
.
Настройка
Чтобы полностью отключить проверку PGP-ключей, добавьте следующую строку в раздел [Options] файла /etc/pacman.conf
:
SigLevel = Never
Для начальной настройки хранилища ключей выполните:
# pacman-key --init
Директива SigLevel принимает 3 основных значения:
- Required, обязательно выполнять проверку сигнатур;
- Optional (по умолчанию), проверять сигнатуры, если они имеются, но также допускать пакеты без подписей;
- Never, никогда не выполнять проверку сигнатур.
Добавление ключей
Когда pacman встречает незнакомые ключи на пакетах, он предлагает пользователю добавить этот ключ. Ключи можно также скачать вручную и выполнить 'pacman-key -a файл-ключа
' или получить файл ключа с сервера с помощью отпечатка. Второй способ легче и объяснен ниже.
- Найдите отпечаток ключа разработчика на странице разработчиков в строке PGP Key. Текст ссылки является отпечатком.
- Выполните команду
pacman-key -r <отпечаток> --keyserver <сервер ключей>
. Вместо <сервер ключей> укажите "hkp://pgp.mit.edu". -
pacman-key -l
выведет список добавленных ключей. - Таким образом добавятся ключи в брелок, но останется "неизвестный" уровень доверия.
Подписывание ключей
Чтобы ключи работали, их уровень доверия нужно изменить.
Чтобы подписать ключ локально, выполните:
# pacman-key --lsign-key <идентификатор ключа>
Так же это можно сделать gpg командой tsign или pacman-key --edit-key "<отпечаток>"
и далее tsign
Pacman'у можно сказать, чтобы он доверял всем ключам брелока. Для этого добавьте ОДНУ из следующих строк в раздел [Options] файла /etc/pacman.conf
SigLevel = Required TrustAll SigLevel = Optional TrustAll
Скрипты для добавления требуемых PGP-ключей
Когда мастер-ключи добавлены, вам не нужно проверять PGP-ключи каждого разработчика Arch Linux или Доверенного Пользователя, как и тех, которые подписаны, как минимум, тремя мастер-ключами.
Скрипт для добавления всех PGP мастер-ключей
Этот скрипт добавляет мастер-ключи в хранилище pacman и устанавливает уровень доверия в "marginal" (3).
Выполняйте от root'а или добавьте sudo перед командой pacman-key.
for key in FFF979E7 CDFD6BB0 4C7EA887 6AC6A4C2 824B18E8; do pacman-key --recv-keys $key pacman-key --lsign-key $key printf 'trust\n3\nquit\n' | gpg --homedir /etc/pacman.d/gnupg/ \ --no-permission-warning --command-fd 0 --edit-key $key done
Скрипт для добавления всех PGP-ключей со Страницы разработчиков
Данный скрипт использует curl чтобы скачать страницу Разработчиков и извлечь отпечатки PGP-ключей, выполняет команду pacman --recv-keys
, используя pgp.mit.edu
в качестве сервера ключей, чтобы добавить ключи в хранилище pacman'а.
Выполняйте от root'а или добавьте sudo перед командой pacman-key.
curl https://www.archlinux.org/developers/ | awk -F\" '(/pgp.mit.edu/) {sub(/.*search=0x/,"");print $1}' | xargs pacman-key --recv-keys
Скрипт для добавления всех PGP-ключей со страницы Доверенных Пользователей
Данный скрипт использует curl чтобы скачать страницу Доверенных Пользователей и извлечь отпечатки PGP-ключей, выполняет команду pacman --recv-keys
, используя pgp.mit.edu
в качестве сервера ключей, чтобы добавить ключи в хранилище pacman'а.
Выполняйте от root'а или добавьте sudo перед командой pacman-key.
curl https://www.archlinux.org/trustedusers/ | awk -F\" '(/pgp.mit.edu/) {sub(/.*search=0x/,"");print $1}' | xargs pacman-key --recv-keys
Скрипт для добавления всех PGP-ключей (и Разработчиков, и Доверенных Пользователей)
curl https://www.archlinux.org/{developers,trustedusers}/ | awk -F\" '(/pgp.mit.edu/) {sub(/.*search=0x/,"");print $1}' | xargs pacman-key --recv-keys
Потенциальное решение, если не удается импортировать ключи
Проблема может возникнуть, если некоторые Интернет-провайдеры блокируют порт, используемый для импорта PGP-ключей.
Отредактируйте /etc/pacman.d/gnupg/gpg.conf
, заменив keyserver hkp://keys.gnupg.net
на keyserver hkp://pgp.mit.edu:11371
. Всё должно заработать.