Пример шифрования файла симметричным алгоритмом 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. |