
Универсальная криптографическая библиотека и набор инструментов 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, разработанной Эриком А. Янгом и Тимом Дж. Хадсоном. Инструментарий OpenSSL распространяется на условиях двойной лицензии (лицензия OpenSSL плюс лицензия SSLeay), что по сути означает, что вы можете свободно получать и использовать его в коммерческих и некоммерческих целях при условии выполнения требований обеих лицензий.
Инструментарий OpenSSL включает:
libssl.a: Реализация SSLv2, SSLv3, TLSv1 и необходимого кода для поддержки SSLv2, SSLv3 и TLSv1 в одном сервере и клиенте.
libcrypto.a: Общие средства шифрования и X.509 v1/v3, необходимые для SSL/TLS, но логически не являющиеся их частью. Он включает процедуры для следующего:
Шифры
libdes — пакет DES-шифрования EAY (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: шифрование/дешифрование/генерация.
Количество бит не ограничено.
Diffie-Hellman: обмен ключами/генерация ключей.
Количество бит не ограничено.
Сертификаты X.509v3
Кодирование/декодирование X509 в/из двоичного ASN1 и основанное на
PEM ASCII-двоичное кодирование, поддерживающее шифрование
закрытым ключом. Программа для генерации запросов на сертификаты
RSA и DSA, а также для генерации сертификатов RSA и DSA.
Системы
Обычные процедуры цифровых конвертов и кодирование base64. Доступ
к шифрам и дайджестам более высокого уровня по имени. Новые шифры
могут загружаться во время выполнения. Система ввода-вывода BIO,
представляющая собой простую неблокирующую абстракцию ввода-вывода.
Поддерживаемые в настоящее время методы: файловые дескрипторы,
сокеты, прием сокетов, подключение сокетов, буфер памяти,
буферизация, 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) по электронной почте:
Обратите внимание, что 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 740.13(e)) для получения подробной информации. Если "ваш исходный код шифрования слишком велик, чтобы служить вложением в электронное письмо", они будут рады получить его по факсу; надеемся, у вас недорогой тариф на международные звонки.
Предпочтительный формат изменений — вывод "diff -u". Вы можете создать его так: