Где взять ключ участника
Публичный ключ участника нужен, чтобы:
- проверять подписи его коммитов и релизов;
- шифровать для него сообщения — например, отчеты об уязвимостях для Lead Maintainer.
Любой способ получения ключа завершается одним и тем же обязательным шагом — сверкой отпечатка (см. ниже). Источник ключа лишь доставляет байты; доверие дает только сверка.
Способы получения
1. WKD — автоматическое обнаружение по email (рекомендуется)
Если email участника находится на домене сайта, ключ обнаруживается автоматически через Web Key Directory:
gpg --locate-keys andrey@ganyushkin.ru
GnuPG сам скачает ключ с https://netgap.io/.well-known/openpgpkey/... и импортирует его. Тот же механизм используют почтовые клиенты (Thunderbird, Outlook с Gpg4win) для автоматического шифрования писем.
2. Прямая загрузка gpg.asc (ключ Lead Maintainer)
Основной ключ Lead Maintainer опубликован в корне сайта:
curl -sSL https://netgap.io/gpg.asc | gpg --import
3. Страница автора в блоге
На странице автора (https://netgap.io/blog/authors/<имя>) отображаются pgp_key_id и полный публичный ключ (если автор включил socials.gpg). Скопируйте блок -----BEGIN PGP PUBLIC KEY BLOCK-----, сохраните в файл и импортируйте:
gpg --import author-key.asc
Ключ Lead Maintainer также опубликован ASCII-блоком в разделе 5 VDP.
4. Файл, полученный от самого участника
Участник может передать вам свой *.asc файл напрямую (почта, мессенджер):
gpg --import my-public-key.asc
Этот способ ничем не хуже остальных — при условии той же сверки отпечатка.
Обязательная сверка отпечатка
Источником истины по ключам контрибьюторов является CONTRIBUTORS.json — там за каждым участником закреплен pgp_key_id. После импорта:
gpg --fingerprint 556B41333653BD5A
Сверьте:
- полный отпечаток (40 символов) — с тем, что опубликован участником (страница автора, VDP) или подтвержден им по независимому каналу;
- последние 16 символов отпечатка — с
pgp_key_idэтого участника вCONTRIBUTORS.json; - email в UID — с email участника в
CONTRIBUTORS.json.
Если хоть что-то не сходится — ключ не используется, а о расхождении сообщается Lead Maintainer: это либо ошибка публикации, либо попытка подмены ключа.
После сверки: локальное доверие (опционально)
Чтобы git log --show-signature и gpg --verify не выводили предупреждение о недоверенном ключе, после сверки отпечатка можно поставить локальную (неэкспортируемую) подпись на ключ:
gpg --lsign-key 556B41333653BD5A
Это чисто локальная пометка «я сверил этот ключ» — она не публикуется и не создает web of trust, что соответствует модели доверия проекта.
Обновление ключей
Ключи со временем меняются: продлевается срок действия, добавляются подключи, публикуется отзыв. Периодически обновляйте импортированные ключи из тех же источников:
# Обновить ключ через WKD
gpg --locate-external-keys andrey@ganyushkin.ru
# Либо повторно импортировать gpg.asc — GnuPG объединит обновления
curl -sSL https://netgap.io/gpg.asc | gpg --import
Если при обновлении ключ оказался отозванным (revoked) — прекратите его использование и уточните актуальный pgp_key_id в CONTRIBUTORS.json.
Чеклист: получение ключа участника
- Ключ получен одним из способов: WKD /
gpg.asc/ страница автора / напрямую от участника. - Полный отпечаток сверен с опубликованным или подтвержденным участником значением.
- Последние 16 символов отпечатка совпадают с
pgp_key_idвCONTRIBUTORS.json. - Email в UID совпадает с email участника в
CONTRIBUTORS.json. - Ключ не истек и не отозван (
gpg --list-keysне показываетexpired/revoked). - (Опционально) Поставлена локальная подпись
gpg --lsign-keyдля подавления предупреждений.