Шифрование: различия между версиями

Материал из Home Wiki
Перейти к навигации Перейти к поиску
Строка 12: Строка 12:


== Генерация новой пары ключей. ==
== Генерация новой пары ключей. ==
<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]]

Версия 06:29, 9 марта 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