Это не официальный сайт wikipedia.org 01.01.2023

OpenSSL — Википедия

OpenSSL

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

OpenSSL
Логотип программы OpenSSL
Скриншот программы OpenSSL
Тип библиотека функций, шифрующее программное обеспечение и утилита
Разработчик Richard Levitte[d][1], Stephen Henson[d], Matt Caswell[d] и Hugo Landau[d]
Написана на Си[5], язык ассемблера и Perl
Операционная система GNU/Linux[d][6], GNU/Hurd[d][6], BSD[d][6], macOS[6] и Microsoft Windows[6]
Первый выпуск 1998
Последняя версия
Читаемые форматы файлов OpenSSL salted format[d]
Создаваемые форматы файлов OpenSSL salted format[d]
Лицензия Apache License 2.0[7]
Сайт openssl.org​ (англ.)
Логотип Викисклада Медиафайлы на Викискладе

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

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

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

Основные релизыПравить

История релизов OpenSSL[9][10]
Версия Дата релиза Комментарий
0.9.1c 23 декабря 1998 года
0.9.2c 22 марта 1999 года
  • Преемник 0.9.1c
0.9.3 25 мая 1999 года
  • Преемник 0.9.2b
0.9.4 9 августа 1999 года
  • Преемник 0.9.3a
0.9.5 28 февраля 2000 года
  • Преемник 0.9.4
0.9.6 25 сентября 2000 года
  • Преемник 0.9.5a
0.9.7 31 декабря 2002 года
  • Преемник 0.9.6h
0.9.8 5 июля 2005 года
  • Преемник 0.9.8za (5 июня 2014)
1.0.0 29 марта 2010 года
  • Преемник 0.9.8x
1.0.1 14 марта, 2012 года
  • Преемник 1.0.0e
  • Поддерживает TLS v1.2
  • Поддержка SRP
1.0.1k 8 января, 2015 года CVE-2014-3572, CVE-2015-0204, CVE-2015-0205
1.0.2 22 января 2015 года
  • Текущий релиз [11][12]
  • Поддержка DTLS 1.2
1.1.0 25 августа 2016 года
1.1.0g 2 ноября 2017 года
1.1.1 11 сентября 2018 года
  • Более 5000 изменений
  • Поддержка TLS v1.3 [13]
1.1.1a 20 ноября 2018 года
  • Исправление ошибок[14]
1.1.1b 26 февраля 2019 года
  • Исправление ошибок
1.1.1c 28 мая 2019 года
  • Исправление ошибок

АлгоритмыПравить

Blowfish, Camellia, DES, RC2, RC4, RC5, IDEA, AES, ГОСТ 28147-89[15]
Хеш-функции
MD5, MD2, SHA, MDC-2, ГОСТ Р 34.11-94[15]
Асимметричные
RSA, DSA, Diffie-Hellman key exchange, ГОСТ Р 34.10-2001 (34.10-94)[15]

Поддержка алгоритмов ГОСТ появилась в версии 1.0.0, выпущенной 29 марта 2010 года, и была реализована сотрудниками фирмы «Криптоком»[16].

Полезные команды 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[17]. Акцент разработчиков сделан на устранении ошибок, удалении излишней функциональности, повышении защищённости и читаемости кода.

BoringSSLПравить

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

ПримечанияПравить

  1. https://github.com/openssl/openssl/graphs/contributors?type=a
  2. Release 3.0.7 — 2022.
  3. OpenSSL version 3.0.7 published — 2022.
  4. OpenSSL version 1.1.1s published — 2022.
  5. The openssl Open Source Project on Open Hub: Languages Page — 2006.
  6. 1 2 3 4 5 Free Software Directory
  7. Change license to the Apache License v2.0 · openssl/openssl@1513331 · GitHub
  8. OpenSSL для QNX4  (рус.) (недоступная ссылка — история). СВД Встраиваемые Системы. Архивировано 10 февраля 2012 года.
  9. OpenSSL - Project Newsflash  (неопр.) (недоступная ссылка — история). OpenSSL Software Foundation. Дата обращения: 25 ноября 2012. Архивировано 26 февраля 2013 года.
  10. r. r  (неопр.). Дата обращения: 14 ноября 2019. Архивировано 29 сентября 2019 года.
  11. OpenSSL 1.x Changelog  (неопр.) (недоступная ссылка — история). OpenSSL Software Foundation. Дата обращения: 25 ноября 2012. Архивировано 26 февраля 2013 года.
  12. OpenSSL 1.0.2 Changelog  (неопр.). OpenNET. Дата обращения: 26 января 2012. Архивировано 19 марта 2015 года.
  13. OpenSSL Foundation, Inc. OpenSSL 1.1.1 Is Released - OpenSSL Blog (англ.). www.openssl.org. Дата обращения: 12 сентября 2018. Архивировано 15 сентября 2018 года.
  14. Changes between 1.1.1 and 1.1.1a  (неопр.). Дата обращения: 8 января 2019. Архивировано 13 сентября 2016 года.
  15. 1 2 3 GOST engine для OpenSSL 1.0
  16. Поддержка ГОСТ в разрабатываемой версии OpenSSL 1.0.0 Архивировано 11 февраля 2011 года. на сайте фирмы «Криптоком».
  17. Проект OpenBSD представил LibreSSL, форк OpenSSL  (неопр.). OpenNET. Дата обращения: 26 ноября 2015. Архивировано 20 ноября 2015 года.
  18. Компания Google представила BoringSSL, форк OpenSSL  (неопр.). OpenNET. Дата обращения: 26 ноября 2015. Архивировано 8 декабря 2015 года.

СсылкиПравить