
Полнофункциональная криптографическая библиотека с поддержкой протоколов 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 All rights reserved.
Проект 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's libdes, который некоторое время
ходил по сети несколько лет, а затем был перелицензирован
им как часть 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: шифрование/дешифрование/генерация.
Нет ограничения на количество бит.
Диффи-Хеллман: обмен ключами/генерация ключей.
Нет ограничения на количество бит.
Сертификаты 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, пожалуйста, сначала выполните следующие действия:
- Загрузите текущий снимок (snapshot) с ftp://ftp.openssl.org/snapshot/
чтобы проверить, не решена ли уже эта проблема
- Удалите ASM-версии библиотек
- Уберите флаги оптимизации компилятора
Если вы хотите сообщить об ошибке, пожалуйста, включите в любой отчёт об ошибке следующую информацию:
- В Unix-системах:
Отчёт о самотестировании, созданный командой 'make report'
- В других системах:
Версия OpenSSL: вывод команды 'openssl version -a'
Название ОС, версия, аппаратная платформа
Данные о компиляторе (название, версия)
- Данные о приложении (название, версия)
- Описание проблемы (шаги для воспроизведения проблемы, если известны)
- Трассировка стека (если приложение создаёт дамп ядра)
Сообщите об ошибке проекту OpenSSL через Request Tracker (http://www.openssl.org/support/rt.html) по электронной почте:
Обратите внимание, что request tracker НЕ следует использовать для общих вопросов или запросов поддержки. То, что что-то работает не так, как вы ожидаете, не обязательно означает, что это ошибка в OpenSSL.
Обратите внимание, что письма на [email protected] записываются в общедоступную базу данных request tracker и пересылаются в публичный список рассылки. Конфиденциальные письма можно отправлять на [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" вывод. Вы можете создать его следующим образом: