pacman-key (Русский)

Tango-preferences-desktop-locale.png

Tango-preferences-desktop-locale.png

Эта страница нуждается в сопроводителе

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

pacman-key — это новая утилита, входящая в pacman 4. Она позволяет пользователю управлять списком доверенных ключей для менеджера пакетов pacman, используя новую реализацию подписи пакетов. Для дополнительных сведений смотрите блогозаписи [1][2][3][4] и вики-страницу package signing proposal.

Общий обзор ключей и отпечатков

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. Всё должно заработать.