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