
Полнофункциональный набор инструментов с открытым исходным кодом, реализующий протоколы SSL/TLS и универсальную криптографическую библиотеку с поддержкой шифров, дайджестов, алгоритмов с открытым ключом и управления сертификатами X.509.
OpenSSL 1.0.1g 7 Apr 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, разработанной Eric A. Young и Tim J. Hudson. Инструментарий 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 через Request Tracker (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 (раздел 740.13(e) EAR) для получения подробной информации. Если "ваш исходный код шифрования слишком велик, чтобы служить вложением в электронное письмо", они с радостью получат его по факсу вместо этого; надеюсь, у вас дешевый междугородний тариф.
Наш предпочтительный формат для изменений — вывод "diff -u". Вы можете сгенерировать его так: