OpenSSL

OpenSSL — полноценная криптографическая библиотека с открытым исходным кодом, широко известна из-за расширения SSL/TLS, используемого в веб-протоколе HTTPS.

Поддерживает почти все низкоуровневые алгоритмы хеширования, шифрования и электронной подписи, а также реализует большинство популярных криптографических стандартов, в том числе позволяет создавать ключи RSA, DH, DSA, сертификаты X.509, подписывать их, формировать CSR (Certificate Signing Request) и CRT (файл сертификата безопасности), шифровать данные и тестировать SSL/TLS соединения.

Доступна в виде пакетов для большинства UNIX-подобных операционных систем (включая Solaris/OpenSolaris, Linux, macOS,  QNX4,  QNX6 и четырёх операционных систем BSD с открытым исходным кодом), а также для OpenVMS и Microsoft Windows.

OpenSSL основана на SSLeay, написанной Эриком Янгом (Eric A. Young) и Тимом Хадсоном (Tim Hudson), которые неофициально закончили работать над ней в декабре 1998 года, когда они начали работать в проекте RSA Security.

Основные релизы

Алгоритмы 

 Blowfish, Camellia, DES, RC2, RC4, RC5, IDEA, AES, ГОСТ 28147-89
 Хеш-функции
 MD5, MD2, SHA, MDC-2, ГОСТ Р 34.11-94
 Асимметричные
 RSA, DSA, Diffie-Hellman key exchange, ГОСТ Р 34.10-2001 (34.10-94)
Поддержка алгоритмов ГОСТ появилась в версии 1.0.0, выпущенной 29 марта 2010 года, и была реализована сотрудниками фирмы «Криптоком».

Полезные команды openssl 

 Создание ключа для SSL-сертификата. Если не указывать -des3, то он будет без пароля:
 # openssl genrsa -des3 -out example.com.key 2048
В случае утери пароля или файла ключа придется пересоздавать сертификат.

 Генерация CSR-запроса:
 # openssl req -new -key example.com.key -out example.com.csr
Имя домена на который создается запрос прописывается в Common Name - example.com, A challenge password и An optional company name вводить не нужно (просто нажимаем Enter).

 Убрать пароль с ключа (необходимо когда сертификат ставится в конфигурацию Apache, иначе он при запуске будет просить пароль):
 # openssl rsa -in example.com.key -out example.com-nopass.key -passin stdin
и вводим пароль с консоли (либо -passin pass:supersecretpassword что считается менее безопасным)

 Прочитать содержимое CSR-файла в более удобном для чтения текстовом виде:
 # openssl req -noout -text -in example.com.csr

Выявленные уязвимости

Уязвимость в реализации дистрибутива Debian 
В Debian версии 0.9.8c-1 к OpenSSL был применён патч, преднамеренно повреждавший генератор случайных чисел. Эта версия OpenSSL была включена в релиз Debian 17 сентября 2006. Все ключи, сгенерированные через эту версию генератора, и все данные, зашифрованные такими ключами, могут считаться скомпрометированными. Проблема была исправлена в версии 0.9.8c-4etch3 дистрибутива Debian 4.0; в версии 0.9.8g-9 дистрибутива Debian 5.0.

Heartbleed bug 

7 апреля 2014 года было объявлено о критической уязвимости OpenSSL 1.0.2-beta и всех версий OpenSSL 1.0.1, кроме 1.0.1g. Уязвимость связана с расширением TLS Heartbeat и позволяет считывать до 64Кб оперативной памяти приложения с каждым heartbeat-запросом. В списке CVE она значится под номером CVE-2014-0160.

Уязвимость существует с 31 декабря 2011 года; уязвимый код был распространён с выпуском версии OpenSSL 1.0.1 14 марта 2012 года. Читая оперативную память веб-сервера, атакующий может получить доступ к конфиденциальной информации как сервера, так и пользователей, позволяя перехватить приватные ключи, cookies и пароли. На момент объявления около 17 % из полумиллиона защищённых веб-серверов предполагались уязвимыми.

Форки

LibreSSL 

После обнаружения уязвимости Heartbleed разработчики проекта OpenBSD объявили о создании форка OpenSSL на основе ветки 1.0.1g под названием LibreSSL. Акцент разработчиков сделан на устранении ошибок, удалении излишней функциональности, повышении защищённости и читаемости кода.

BoringSSL 

В июле 2014 компания Google анонсировала собственный форк OpenSSL под названием BoringSSL. Google намеревается сотрудничать и обмениваться патчами с разработчиками OpenSSL и LibreSSL.

Примечания

Ссылки 
 OpenSSL.org 
 Win32 версия OpenSSL , slproweb.com
 Win64 версия OpenSSL , slproweb.com
 IA64, Alpha, VAX версия OpenSSL для  OpenVMS  , polarhome.com
 статья «Использование OpenSSL» , opennet.ru
 Перевод на русский некоторых команд OpenSSL, omsk.lug.ru
 OpenSSL на Xgu.ru  — перевод OpenSSL Command Line HOWTO на русский язык

Свободные библиотеки программ
FSF/UNESCO
Криптографическое программное обеспечение