
Полнофункциональный набор инструментов с открытым исходным кодом, реализующий протоколы SSL/TLS и библиотеку криптографии общего назначения, включая шифры, дайджесты, алгоритмы с открытым ключом и обработку сертификатов X.509.
OpenSSL 1.0.1g 7 апреля 2014
Copyright (c) 1998-2011 The OpenSSL Project Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson Все права защищены.
Проект OpenSSL — это совместная работа по созданию надежного, готового к промышленному использованию, полнофункционального набора инструментов с открытым исходным кодом, реализующего протоколы Secure Sockets Layer (SSL v2/v3) и Transport Layer Security (TLS v1), а также полную криптографическую библиотеку общего назначения. Проект управляется мировым сообществом добровольцев, которые используют Интернет для общения, планирования и разработки набора инструментов OpenSSL и связанной с ним документации.
OpenSSL основан на превосходной библиотеке SSLeay, разработанной Эриком А. Янгом и Тимом Дж. Хадсоном. Набор инструментов OpenSSL распространяется по двойной лицензии (лицензия OpenSSL плюс лицензия SSLeay), что по сути означает, что вы можете свободно получать и использовать его в коммерческих и некоммерческих целях, при условии соблюдения условий обеих лицензий.
Набор инструментов OpenSSL включает:
libssl.a: Реализация SSLv2, SSLv3, TLSv1 и необходимого кода для поддержки SSLv2, SSLv3 и TLSv1 одновременно на одном сервере и клиенте.
libcrypto.a: Общие процедуры шифрования и работы с X.509 v1/v3, необходимые для SSL/TLS, но не являющиеся их логической частью. Включает следующие подпрограммы:
Шифры
libdes - пакет шифрования DES от EAY, который несколько лет гулял по сети, а затем был перелицензирован им в составе SSLeay. Включает 15 «режимов/вариаций» DES (версии с 1, 2 и 3 ключами для ecb, cbc, cfb и ofb; pcbc и более общая форма cfb и ofb), включая desx в режиме cbc, быстрый crypt(3) и процедуры для чтения паролей с клавиатуры.
Шифрование RC4,
Шифрование RC2 - 4 различных режима: ecb, cbc, cfb и ofb.
Шифрование Blowfish - 4 различных режима: ecb, cbc, cfb и ofb.
Шифрование IDEA - 4 различных режима: ecb, cbc, cfb и ofb.
Дайджесты
Алгоритмы дайджестов сообщений MD5 и MD2, быстрые реализации,
Алгоритмы дайджестов сообщений SHA (SHA-0) и SHA-1,
Дайджест сообщений MDC2. Хэш на основе DES, популярный в смарт-картах.
Открытый ключ
Шифрование/дешифрование/генерация RSA.
Нет ограничения на количество бит.
Шифрование/дешифрование/генерация DSA.
Нет ограничения на количество бит.
Обмен ключами/генерация ключей Diffie-Hellman.
Нет ограничения на количество бит.
Сертификаты X.509v3
Кодирование/декодирование X509 в/из двоичного ASN1 и PEM-основанного
ASCII-двоичного кодирования, поддерживающего шифрование с помощью
закрытого ключа. Программа для генерации запросов сертификатов RSA и DSA
и для генерации сертификатов RSA и DSA.
Системы
Обычные процедуры цифровых конвертов и кодирование base64. Доступ
более высокого уровня к шифрам и дайджестам по имени. Новые шифры могут быть
загружены во время выполнения. Система ввода-вывода BIO — простая неблокирующая
абстракция ввода-вывода. Поддерживаются следующие методы: файловые дескрипторы,
сокеты, accept сокетов, connect сокетов, буфер памяти, буферизация, SSL
клиент/сервер, файловый указатель, шифрование, дайджест, неблокирующее тестирование
и null.
Структуры данных
Динамически растущая хэш-система
Простой стек.
Загрузчик конфигурации, использующий формат, похожий на MS .ini файлы.
openssl: Инструмент командной строки, который может использоваться для: Создания параметров ключей RSA, DH и DSA Создания сертификатов X.509, CSR и CRL Вычисления дайджестов сообщений Шифрования и дешифрования с помощью шифров Тестирования клиента и сервера SSL/TLS Обработки подписанной или зашифрованной почты S/MIME
Различные компании владеют различными патентами на различные алгоритмы в различных местах по всему миру. ВЫ несете ответственность за то, чтобы использование вами любых алгоритмов было законным, путем проверки наличия патентов в вашей стране. Файл содержит некоторые из патентов, о которых мы знаем или которые, по слухам, существуют. Это не окончательный список.
RSA Security владеет патентами на программное обеспечение алгоритма RC5. Если вы намерены использовать этот шифр, вы должны связаться с RSA Security для получения условий лицензирования. Их веб-страница: http://www.rsasecurity.com/.
RC4 является товарным знаком RSA Security, поэтому использование этой метки должно производиться только с разрешения RSA Security.
Алгоритм IDEA запатентован компанией Ascom в Австрии, Франции, Германии, Италии, Японии, Нидерландах, Испании, Швеции, Швейцарии, Великобритании и США. С ними следует связаться, если этот алгоритм будет использоваться; их веб-страница: http://www.ascom.ch/.
NTT и Mitsubishi имеют патенты и находящиеся на рассмотрении патенты на алгоритм Camellia, но разрешают бесплатное использование без необходимости явного лицензионного соглашения: http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html
Для установки этого пакета в Unix-подобных системах прочитайте файл INSTALL. Для платформы Win32 прочитайте файл INSTALL.W32. Для систем OpenVMS прочитайте INSTALL.VMS.
Прочитайте документацию в каталоге doc/. Она довольно грубая, но в ней перечислены функции; вам, вероятно, придется заглянуть в код, чтобы понять, как их использовать. Посмотрите примеры программ.
Для некоторых платформ существуют известные проблемы, которые могут повлиять на пользователя или автора приложения. Мы стараемся собирать их в doc/PROBLEMS с текущими соображениями о том, как их следует решать в будущих версиях OpenSSL.
Информацию о том, как получить коммерческую техническую поддержку, смотрите на веб-сайте OpenSSL www.openssl.org.
Если у вас возникли проблемы с OpenSSL, сначала выполните следующие шаги:
- Загрузите текущую версию с ftp://ftp.openssl.org/snapshot/
чтобы проверить, не была ли проблема уже решена
- Удалите ASM-версии библиотек
- Удалите флаги оптимизации компилятора
Если вы хотите сообщить об ошибке, пожалуйста, включите следующую информацию в любое сообщение об ошибке:
- В системах Unix:
Отчет самопроверки, сгенерированный командой 'make report'
- В других системах:
Версия OpenSSL: вывод команды 'openssl version -a'
Название ОС, версия, аппаратная платформа
Детали компилятора (название, версия)
- Детали приложения (название, версия)
- Описание проблемы (шаги для воспроизведения, если известны)
- Трассировка стека (если приложение создает дамп ядра)
Сообщите об ошибке в проект OpenSSL через систему отслеживания запросов (http://www.openssl.org/support/rt.html) по электронной почте:
Обратите внимание, что система отслеживания запросов НЕ должна использоваться для общих вопросов или запросов поддержки. То, что что-то работает не так, как вы ожидаете, не обязательно означает, что это ошибка в OpenSSL.
Обратите внимание, что почта, отправленная на [email protected], записывается в общедоступную базу данных системы отслеживания запросов и пересылается в открытый список рассылки. Конфиденциальная почта может быть отправлена на [email protected] (ключ PGP доступен на серверах ключей).
Разработка координируется через список рассылки openssl-dev (см. http://www.openssl.org для информации о подписке). Если вы хотите отправить патч, отправьте его на [email protected] с строкой "[PATCH]" в теме. Пожалуйста, обязательно включите текстовое объяснение того, что делает ваш патч.
Если вы не уверены, будет ли функция полезна для сообщества OpenSSL, сначала обсудите ее в списке рассылки openssl-dev. Возможно, кто-то уже работает над тем же, или есть веская причина, по которой эта функция не реализована.
Патчи должны быть как можно более актуальными, желательно относительно текущего Git или последнего снапшота. Они должны соответствовать стилю кодирования OpenSSL и компилироваться без предупреждений. Некоторые цели разработки основной команды могут использоваться для тестирования (debug-steve64, debug-geoff и т.д.). OpenSSL компилируется на многих различных платформах: старайтесь использовать только переносимые возможности.
Примечание: По юридическим причинам вклад из США может быть принят только в том случае, если уведомление TSU и копия патча отправлены на [email protected] (ранее BXA) с копией координатору запросов на шифрование ENC; пожалуйста, уделите время для ознакомления с http://www.bis.doc.gov/Encryption/PubAvailEncSourceCodeNofify.html [sic] и http://w3.access.gpo.gov/bis/ear/pdf/740.pdf (EAR Section 740.13(e)) для подробностей. Если «ваш исходный код шифрования слишком велик для отправки в виде вложения по электронной почте», они с радостью примут его по факсу; надеемся, у вас дешевый тариф на междугороднюю связь.
Наш предпочтительный формат для изменений — вывод "diff -u". Вы можете сгенерировать его так: