OpenSSL: 101 прием работы

Материал из OpenBSD-Wiki
Перейти к: навигация, поиск
Данная статья 100 % копипаст с www.openbsd.ru

Мини-руководство «шаг за шагом»

Пример шифрования файла симметричным алгоритмом des3 с помощью openssl enc:

% openssl enc -des3 -e -in plain.txt -out enc.txt
enter des-ede3-cbc encryption password:
Verifying — enter des-ede3-cbc encryption password:

Расшифровать файл можно, заменив ключ '-e' ключом '-d':

% openssl enc -des3 -d -in enc.txt -out plain.txt
enter des-ede3-cbc decryption password:

Для того, чтобы собеседник мог передать нам файл в зашифрованном виде, а мы бы смогли его расшифровать, стоит воспользоваться ассиметричной криптографией, сгенерировав пару RSA-ключей (публичный и приватный):

% openssl genrsa -out rsaprivatekey.pem -des3 2048
Generating RSA private key, 2048 bit long modulus
……………..+++
…………….+++
e is 65537 (0x10001)
Enter pass phrase for rsaprivatekey.pem:
Verifying — Enter pass phrase for rsaprivatekey.pem:

Выставляем корректные права доступа:

% chmod 600 rsaprivatekey.pem

Получить соответствующий закрытому публичный ключ можно с помощью openssl rsa:

% openssl rsa -in rsaprivatekey.pem -pubout -out rsapublickey.pem
Enter pass phrase for rsaprivatekey.pem:
writing RSA key

Публичный ключ мы передаем собеседнику. Он шифрует файл на нем, используя openssl rsautl:

% openssl rsautl -encrypt -pubin -inkey rsapublickey.pem -in plain.txt -out cipher.txt

Мы получаем файл, расшифровываем его, используя свой секретный ключ:

% openssl rsault -decrypt -inkey rsaprivatekey.pem -in cipher.txt -out plain.txt

Кроме шифрования, можно также подписывать файлы, предоставляя гарантии, что данный файл послан лично нами, и давая возможность проверить его аутентичность:

% openssl dgst -sha1 -sign rsaprivatekey.pem -out sign.txt myfile.tar.gz

Все, что нужно получателю файла — это проверить подпись, используя наш публичный ключ:

% openssl dgst -sha1 -verify rsapublickey.pem -signature sign.txt myfile.tar.gz
Verified OK.

Вычислить контрольную сумму файла можно с помощью openssl dgst:

% openssl dgst -md5 myfile.tar.gz
MD5(myfile.tar.gz) =65b36f8d54b8bab0a787cbd4a8dd8aef

Чтобы быстро сгенерировать пароль, WEP или IPsec-ключи, можно воспользоваться openssl rand:

% openssl rand -base64 45
0JZmfHQL3WI7PTUYcq1w8yQ8wFE3mB7Wd7vdAYd2A6x0cTHmVYqI/Su3o5qh

Если нужно найти соответствие пароля его md5-шифру, можно использовать openssl passwd:

% openssl passwd −1 mypassword
$1$OsmexMtO$0CtV.Lb6nhGOSGKM8jKNO.

Пример подписи почтового сообщения своим сертификатом:

% openssl smime -sign -signer server.crt -inkey server.key \
-in message.txt -text | mail mailbox@domain.ru

А теперь еще зашифруем:

% openssl smime -encrypt -in message.txt -signer server.crt \
 -inkey server.key -text | openssl smime -encrypt \
 -des3 myserver.crt -out mail.msg | mail mailbox@domain.ru

Чтобы протестировать работу сетевого сервиса, который работает через SSL, выполним:

% openssl s_client -connect myserver:443

Статья основана на материалах, предоставленных Антоном Карповым www.toxahost.ru.