OpenSSL: 101 прием работы
- Данная статья 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.