Одна из главных проблем сети www — невозможность верифицировать пользователя. На любом этапе передачи сообщения, можно вмешаться в трафик пользователя и подменить его сообщение на другое. Чтобы миновать это, используется шифрование сообщений. Для веб-сайтов это решается средствами защищенного формата HTTP в виде надстройки HTTPs, с помощью TLS сертификатов, выданных удостоверяющими центрами. Однако, сами удостоверяющие центры могут быть хакнуты или сертификат может быть заменен на уровне системы конечного пользователя. Чтобы избавиться от лишних прослоек и защитить свое сообщение в сети, например посредством передачи E-Mail или Git-коммита, я рекомендую использовать асимметричное шифрование GPG. О его настройке и пойдет далее речь.
Генерация ключа на MacOS используя утилиту GPG2
Скачиваем бинарь https://sourceforge.net/p/gpgosx/docu/Download/ или собираем утилиту из исходников.
Генерация ключа
gpg2 --full-gen-key
Затем придумываем свой passphrase. Он в дальнейшем нам понадобится для доступа к созданным ключам.
В результате получаем отпечаток ключа. В моем случае это 9A9A4EF0EBFF0EAD8F90FC6F0D8AE20DCFB37AAD. Далее в тексте я буду использовать его.
Отображение публичного ключа
gpg2 --armor --export 9A9A4EF0EBFF0EAD8F90FC6F0D8AE20DCFB37AAD
Экспорт ключей
Крайне желательно экспортировать ваши ключи в файлы и сохранить их в безопасном месте.
Экспорт открытого ключа в файл
gpg2 --armor --export YOUR@EMAIL > mygpgkey.asc
Экспорта секретного ключа в файл
gpg2 --armor --export-secret-key YOUR@EMAIL > mysecretpgpkey.asc
Экспорт trustdb в текстовый файл
gpg --export-ownertrust > trustdb.txt
Генерация ключа на Windows
Скачиваем Kleopatra https://gnupg.org/download/.
Настройка GPG подписи в Git
Добавляем в настройки локального гита свою подпись
git config --global user.signingkey 9A9A4EF0EBFF0EAD8F90FC6F0D8AE20DCFB37AAD
git config --global commit.gpgsign true
Установка конфигурации программы gpg для MacOS
git config --global gpg.program gpg2
Установка конфигурации программы gpg для Windows
Для Windows нужно указать путь к программе:
git config --global gpg.program "C:/Program Files (x86)/GnuPG/bin/gpg.exe"
В результате ваша конфигурация git будет выглядеть примерно так:
(Опционально) можете сохранить ваш открытый ключ на своем сервере
Для удобства передачи своего открытого ключа, вы можете оперировать гиперссылкой ссылающуюся на ваш блог. В моем случае это WordPress.
Пример загрузки открытого ключа на мой блог WordPress:
scp -r mygpgkey.asc [email protected]:/var/www/html/wp-content/uploads/