Шифрование
GnuPG ключи
Мы шифруем их публичным ключом, они расшифровывают своим приватным.
Они шифруют нашим публичным ключом, мы расшифровываем нашим приватным.
Мы подписываем нашим приватным ключом, они проверяют подпись нашим публичным.
Они подписывают своим приватным ключом, мы проверяем подпись их публичным.
Генерация новой пары ключей.
gpg --gen-key
Импорт GnuPG ключа в папку с набором ключей
gpg --homedir [/path/to/.gnupg/] --import [files]
Экспорт GnuPG публичного ключа из набора ключей
gpg --homedir [/path/to/.gnupg/] --armor --output [file] --export [names]
Экспорт GnuPG секретного ключа из набора ключей
gpg --homedir [/path/to/.gnupg/] --armor --output [file] --export-secret-keys [names]
Выводит все ключи и их отпечатки.
gpg --homedir [/path/to/.gnupg/] --fingerprint
Сертификаты и ключи OpenSSL
Генерация 1024 битного приватного ключа стандарта RSA
openssl genrsa -des3 -out [private.key] 1024
Cоздание публичного ключа на основании приватного
openssl rsa -in [private.key] -out [public.key] -pubout
Создание CSR-запроса на получение сертификата
openssl req -new -key [private.key] -out [server.csr]
Конвертация сертификата из бинарного формата p12 в текстовый pem для cURL.
openssl pkcs12 -in [cert.p12] -nodes > [cert.pem]
Конвертация сертификата из текстового pem в бинарный формат p12.
openssl pkcs12 -export -in [cert.pem] -inkey [private.key] -out [cert.p12]
Конвертация сертификата из бинарного формата DER в текстовый pem для cURL.
openssl x509 -in [cert.cer] -inform d -out [cert.pem]
Просмотр информации о ключе в формате pem
(Выдаётся в том случае если она присутствует в ключе). Интересующие поля это дата окончания срока действия ключа и email издателя. openssl x509 -text -noout -in [cert.pem]
Информация запроса
openssl req -noout -text -in [server.csr]
Отпечаток сертификата (еще называют thumbprint)
openssl x509 -in [cert.pem] -fingerprint -noout
Получение серийного номера сертификата (serial number)
openssl x509 -in [cert.pem] -serial -noout
Шифрование файлов ключами SSH
Экспорт публичного ключа
ssh-keygen -f work.pub -e -m PKCS8
Шифрование
openssl rand 64 > key echo key | openssl enc -aes-256-cbc -pass stdin -in mps_us.sql.gz -out mps_us.sql.enc echo key | openssl rsautl -encrypt -pubin -inkey work.pub -out mps_us.sql.key rm key
Отправляем 2 файла mps_us.sql.enc и mps_us.sql.key.
Принимающая сторона может их расшифровать при наличии приватного ключа, соответствующего публичному work.pub. openssl rsa -in ~/.ssh/id_rsa -outform pem > PRIV openssl rsautl -decrypt -inkey PRIV -in mps_us.sql.key | openssl enc -aes-256-cbc -pass stdin -d -in mps_us.sql.enc -out mps_us.sql.gz rm PRIV