Перейти к основному содержимому

Где взять ключ участника

Публичный ключ участника нужен, чтобы:

Любой способ получения ключа завершается одним и тем же обязательным шагом — сверкой отпечатка (см. ниже). Источник ключа лишь доставляет байты; доверие дает только сверка.

Способы получения

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

Сверьте:

  1. полный отпечаток (40 символов) — с тем, что опубликован участником (страница автора, VDP) или подтвержден им по независимому каналу;
  2. последние 16 символов отпечатка — с pgp_key_id этого участника в CONTRIBUTORS.json;
  3. 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 для подавления предупреждений.