Сгенерировать ключ
gpg --gen-key
Лучше выбрать алгоритм RSA и длину ключей 4096 бит.
Чтобы не было ругани при подписи,делаем
gpg --edit-key keyid
Затем в диалоге говорим trust, жмем 5 («I trust ultimately»), говорим quit.
Создание сертификата отзыва!!!
gpg --gen-revoke --armor --output=revocation.crt keyid
Используя его, ключ можно отозвать с сервера:
gpg --import revocation.crt
Передача ключа на сервер
gpg --keyserver pgp.mit.edu --send-keys keyid
Важно! Сертификат отзыва не шифруется и может быть использован кем угодно. Убедитесь, что храните его в надежном месте (лучше даже в нескольких таких местах) и непременно в зашифрованном виде!
Высасываем ключ на другом сервере
gpg --keyserver pgp.mit.edu --search-keys keyid
gpg --list-sigs keyid
gpg --check-sigs keyid
Обновление ключей с сервера
gpg --keyserver pgp.mit.edu --refresh-keys
Просмотр списка ключей:
gpg --list-keys
gpg --list-secret-keys
gpg --list-public-keys
Удалить ключ:
gpg --delete-secret-keys
gpg --delete-keys keyid
Экспорт открытого ключа в текстовом виде (можно писать на всех заборах):
gpg --armor --output pubkey.txt --export keyid
Экспорт закрытого ключа в текстовом виде (ключ все еще зашифрован мастер-паролем, можно использовать для бэкапа в Git):
gpg --armor --output privkey.txt --export-secret-keys keyid
Импорт открытого ключа:
gpg --import key.txt
Импорт закрытого ключа:
gpg --allow-secret-key-import --import privkey.txt
Если не указать —alow-secret-key-import, импортируется только открытый ключ, и при попытке подписать что-то вы будете получать странные ошибки
Экспорт открытого ключа на keyserver:
gpg --keyserver pgp.mit.edu --send-keys keyid
Важно! После того, как вы залили ключ на keyserver, его будет невозможно удалить, только сделать revoke!!!
Импорт открытого ключа с keyserver:
gpg --keyserver pgp.mit.edu --search-keys keyid
Пример шифрования и подписи файла для заданного получателя (ключ -r можно указывать много раз):
gpg --encrypt --sign --armor -r keyid msg.txt
Расшифровка файла и проверка подписи осуществляется командой:
gpg msg.txt.asc
Пример подписи и проверки подписи бинарного файла (например, ISO образа диска):
gpg --detach-sign file.iso
gpg --verify file.iso.sig
Симметричное шифрование/дешифрование файла (удобно, например, для хранения паролей):
gpg -o nonsense.gpg --cipher-algo AES -a -c nonsense.txt
gpg -o nonsense2.txt -d nonsense.gpg
Симметричное шифрование с сохранением в бинарном формате (удобно для шифрования бэкапов):
tar -cvzf - /home/eax | \
gpg --symmetric --cipher-algo AES256 --digest-algo SHA256 \
--compression-algo Uncompressed > backup.tgz.gpg
Расшифровка зашифрованного таким образом файла:
gpg --decrypt backup.tgz.gpg | tar -xvzf -