- How to Install OpenSSL from Source in CentOS and Ubuntu
- Step 1: Install Development Tools
- Step 2: Compile OpenSSL from Sources
- If You Appreciate What We Do Here On TecMint, You Should Consider:
- Bog BOS: OpenSSL: установка и измерение производительности
- Установка 1.0.2q (1.1.0j, 1.1.1a не проходят тесты) на Linux Fedora 10 (экзотика)
- Установка OpenSSL 0.9.7a на Fedora Core 3
- Установка OpenSSL 0.9.6 на Linux Red Hat 7.1
- Установка OpenSSL 0.9.5a на Linux Red Hat 7.0
- Установка 0.9.5a/0.9.6b на Solaris и Linux Red Hat 6.2
- Ключи config:
- Скорость (openssl speed) на P4 2800 MHz (Intel D915PLB), FC3:
- Скорость (openssl speed) на PIII 917MHz 😉 Linux RedHat:
- Скорость (openssl speed) на SparcServer10 Solaris 2.5:
- Скорость (openssl speed) на SparcStation4 Solaris 2.5:
How to Install OpenSSL from Source in CentOS and Ubuntu
OpenSSL is a full-featured software library that contains an open-source implementation of the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols, used for securing information transmitted over computer networks.
It is a general-purpose cryptography library and supports a number of different cryptographic algorithms including AES, Blowfish; MD5, MD4, SHA-1, SHA-2 cryptographic hash functions; RSA, DSA, Diffie–Hellman key exchange, Elliptic curve and many others.
In this article, we will explain how to install the latest stable version of OpenSSL from sources on CentOS and Ubuntu based distributions.
Step 1: Install Development Tools
1. To compile OpenSSL manually from sources, you need to first install few dependencies such as “Development Tools” under RHEL/CentOS/Fedora or “build-essential” in Debian/Ubuntu as shown.
Step 2: Compile OpenSSL from Sources
2. Next, download the latest stable version of OpenSSL (v1.0.2 at the time of writing, which is a Long Term Support (LTS) release, supported until 31st December 2019), from the download page using following wget command and unpack it using tar command.
3. Now, move into the extracted directory, configure, build, after a successful build, test the libraries and install OpenSSL in the default location, which is /usr/local/ssl, by running the following commands.
4. Once you have successfully installed OpenSSL, you can move into the installation directory and view the various sub-directories and files using ls command.
The following are important directories you need to take note of:
- bin – contains the openssl binary and some utility scripts.
- include/openssl – contains the header files needed for building your own programs that use libcrypto or libssl.
- lib – contains the OpenSSL library files.
- lib/engines – contains the OpenSSL dynamically loadable engines.
- man – contains the OpenSSL man-pages.
- share/doc/openssl/html – contains HTML rendition of the man-pages.
- certs – the default location for certificate files.
- private – the default location for private key files.
5. To check the version of OpenSSL you have just installed, run the following command.
6. To use the newly installed OpenSSL version on your system, you need to add the directory /usr/local/ssl/bin/ to your PATH, in the file
/.bashrc (or the equivalent for your shell).
Add this line at the bottom of the file.
Save and close the file and reload the configuration using the command below.
7. Now open a new terminal window and run the following commands to confirm that the new OpenSSL binary is located in your PATH and that you can run it without typing its full path.
That’s all! In this article, we have explained how to install the latest OpenSSL version from source on Linux systems. If you have any questions, use the command form below to reach us.
If You Appreciate What We Do Here On TecMint, You Should Consider:
TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.
If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.
We are thankful for your never ending support.
Источник
Bog BOS: OpenSSL: установка и измерение производительности
Перед прочтением рекомендуется ознакомиться с основными криптографическими понятиями в статье о безопасности.
OpenSSL представляет собой реализацию протокола SSL (Secure Socket Layer v2/v3) и Transport Layer Security (TLS v1), доступную для бесплатного использования (и клиент и сервер). Включает криптографическую библиотеку: шифрование (des в разных режимах, des3, RC2, RC4, IDEA, Blowfish, AES-128, AES-256, cast, cast5); контрольные суммы (MD2, MD4, MD5, SHA, SHA-1, MDC2, RMD160); публичные ключи без ограничения длины (RSA, DSA, Diffie-Hellman); X.509v3 сертификаты (ASN1, PEM) (подписи cast, hmac, rc5), которую можно использовать как для SSL/TLS так и для других целей (шифрование файлов — openssl(1), OpenSSH, MySQL). Основана на библиотеке SSLeay. Ответственность за нарушение патентов лежит на пользователе (особенно IDEA, RC5, MDC2 — не скомпилированы в Red Hat Linux).
Поставляется две версии: normal (для обычного использования) и engine (поддержка аппаратного шифрования). В версии 0.9.7 поддержка аппаратного шифрования слита в основную версию.
Файл настройки (обычно /usr/share/ssl/openssl.cnf или /usr/lib/ssl/openssl.cnf или /etc/openssl.cnf или /etc/pki/tls/openssl.cnf) делится на секции, разделяемые заголовками секций (строки до первого заголовка относятся к секции с именем default):
Комментарии начинаются с символа ‘#’. Секция состоит из строк вида: имя=значение (обычное использование кавычек и ‘\’). Имя может состоять из букв, цифр и символов «.,;_». Могут использоваться макроподстановки: $имя или $ <имя>или $имя-секции::имя или $<имя-секции::имя>. Специальная секция ENV содержит значения переменных окружения. Значения сначала ищутся в указанной именованной секции (используется последнее найденное), а в отсутствии — в секции default.
Имя конфигурационного файла задаётся при компиляции или берётся из переменной окружения OPENSSL_CONF (SSLEAY_CONF) или задаётся ключом -config.
Задание парольной фразы (пароля) для основной утилиты openssl производится с помощью ключей -passin (расшифровка) или -passout (шифровка). Параметр ключа описывает источник парольной фразы (по умолчанию, она запрашивается с терминала):
- pass:пароль
- env:имя-переменной-окружения
- file:имя-файла (первая строка должна содержать пароль; если в одной команде задаются одинаковые имена файлов для -passin и -passout, то в качестве пароля шифровки используется вторая строка файла)
- fd:номер-дескриптора
- stdin
Создание частного ключа RSA производится командой openssl genrsa со следующими опциональными ключами:
- -out имя-файла-результата
- -des | -des3 | -idea (шифровать частный ключ; рекомендуется -des3)
- -F4 | -3 (65537; экспонента для публичного ключа)
- -passout источник-пароля
- -rand имена-файлов-через-двоеточие (источник случайных данных)
- число-бит (512; рекомендуется не менее 1280)
Создание файла параметров для DSA и манипуляция с ним производится командой openssl dsaparam с ключами:
- -inform DER | PEM (входной формат ASN1 DER PKIX или PEM base64 DER с заголовками)
- -outform DER | PEM
- -in имя-входного-файла-с-параметрами (по умолчанию со стандартного ввода)
- -out имя-файла-результата (по умолчанию на стандартный вывод; не должен совпадать с входным файлом)
- -noout (не выводить параметры в кодированном виде)
- -text (выводить параметры в человеколюбивом формате)
- -C (выводить параметры в формате C-кода)
- -genkey (создавать ключи из создаваемых или извлекаемых параметров)
- -rand имена-файлов-через-двоеточие (источник случайных данных)
- число-бит (рекомендуется не менее 1280)
Создание частного ключа DSA производится командой openssl gendsa со следующими опциональными ключами:
- -out имя-файла-результата
- -des | -des3 | -idea (шифровать частный ключ; рекомендуется -des3)
- -passout источник-пароля
- -rand имена-файлов-через-двоеточие (источник случайных данных)
- имя-файла-параметров (создаётся с помощью openssl dsaparam)
Создание зашифрованного ключа своего корневого CA (предварительно создаётся БД CA):
Параноики могут спрятать ca.key в сейф и доставать только для подписи сертификатов.
Создание зашифрованных ключей серверов и почтовых клиентов:
P.S. Это ж сколько спама начнёт приходить на test@company.ru!
Преобразование ключей из внутреннего формата PEM (или DER) в PKCS #8 и обратно производится командой «openssl pkcs8» с параметрами:
- -topk8 (в PKCS #8; по умолчанию из PKCS #8)
- -inform DER | PEM (входной формат ASN1 DER PKIX или PEM base64 DER с заголовками)
- -outform DER | PEM
- -in имя-файла (stdin)
- -passin источник-пароля для входного файла
- -out имя-файла-результата (по умолчанию на стандартный вывод; не должен совпадать с входным файлом)
- -passout источник-пароля для выходного файла
- -nocrypt (выводить или читать незашифрованный PKCS #8)
- -nooct (для совместимости с неправильными программами не заключать RSA ключи в OCTET STRING)
- -embed (для совместимости с неправильными программами специфически оформлять DSA ключи)
- -nsdb (нарушение стандарта для совместимости с БД частных ключей Netscape)
- -v2 алгоритм-PBES2 (des, des3 — рекомендуется, rc2; PBE-SHA1-RC2-64, PBE-MD2-RC2-64, PBE-MD5-RC2-64, PBE-SHA1-DES, PBE-SHA1-3DES и др.)
- -v1 алгоритм-PBES1 (pbeWithMD5AndDES-CBC; PBE-MD2-DES, PBE-MD5-DES)
Параметры для команды запроса и создания сертификата (openssl req) хранятся в секции req конфигурационного файла:
- default_md md5 | sha1 | mdc2 (MD5; используемый алгоритм хеширования)
- encrypt_key no (не шифровать создаваемый ключ; аналог аргумента -nodes)
- encrypt_rsa_key no (не шифровать создаваемый ключ)
- input_password (пароль дешифровки частного ключа)
- output_password (пароль шифровки частного ключа)
- default_bits (512; размер ключа при использовании аргумента -new; перебивается аргументом -newkey)
- default_keyfile (stdout; имя файла для записи создаваемого частного ключа; перебивается аргументом -keyout)
- string_mask (default; разрешённый тип строк (рекомендуется nombstr, т.к. не все клиентские приложения могут обрабатывать BMPString и UTF8Strings; сам пакет OpenSSL имеет проблемы с T61String (teletext)):
- default: PrintableString, T61String, BMPString
- pkix: PrintableString, BMPString
- utf8only: UTF8Strings
- nombstr: PrintableString, T61String (нет BMPStrings и UTF8Strings)
- distinguished_name (имя секции, содержащей значения полей, определяющих уникальное имя (DN, distinguished name), предлагаемые в качестве шаблона при вводе)
- attributes (имя секции, содержащей атрибуты запроса; сам OpenSSL игнорирует их при подписании запроса)
- req_extensions (имя секции, содержащей список расширений к сертификату (например, v3_req); перекрывается аргументом -reqexts)
- x509_extensions (имя секции, содержащей список расширений к сертификату при использовании аргумента -x509; например, v3_ca; перекрывается аргументом -extensions)
- utf8 yes (значения полей сертификата в файле и вводимые с терминала интерпретируются как UTF8, иначе — ASCII)
- prompt no (не запрашивать значения полей сертификата, брать все значения из конфигурационного файла)
- RANDFILE (имя файла источника случайных данных для создаваемого ключа)
- oid_file (список дополнительных объектов; каждая строка файла содержит: составной номер объекта, короткое имя, полное имя)
- oid_section (имя секции с описанием дополнительных объектов: короткое-имя=номер)
Формат секций, задаваемых distinguished_name и attributes, зависит от значения параметра prompt. Если «no», то секция просто содержит имена и значения полей. Если же содержимое секции используется как шаблон для запроса, то для каждого поля определяются 4 параметра:
- имя-поля = «текст приглашения»
- имя-поля_default = «значение по умолчанию» (чтобы пропустить поле, надо ввести «.»)
- имя-поля_min = минимальная-длина-строки
- имя-поля_max = максимальная-длина-строки
Имя поля может предваряться префиксом и точкой, которые удаляются при обработке, для того, чтобы можно было задавать несколько значений одного поля. В качестве имени поля можно использовать короткое или полное имя идентификатора объекта. Встроенные имена: commonName, countryName, localityName, organizationName, organizationUnitName, stateOrProvinceName, emailAddress, name, surname, givenName, dnQualifier. Дополнительные идентификаторы объектов задаются параметрами oid_file и oid_section.
Ключи команды запроса и создания сертификата (openssl req) в формате PKCS#10 или создания самоподписанного сертификата для самодельного корневого CA:
- -inform DER | PEM (входной формат ASN1 DER PKIX или PEM base64 DER с заголовками)
- -outform DER | PEM
- -in имя-входного-файла-с-параметрами (по умолчанию со стандартного ввода; если не используются ключи -new или -newkey)
- -passin источник-пароля для входного файла
- -out имя-файла-результата (по умолчанию на стандартный вывод; не должен совпадать с входным файлом)
- -passout источник-пароля для выходного файла
- -text (выводить запрос сертификата в текстовой форме)
- -pubkey (вывести публичный ключ)
- -noout (не выводить запрос в кодированном виде)
- -modulus (вывести modulus публичного ключа)
- -verify (проверить подпись на запросе)
- -new (создать запрос на сертификат; если не использовать аргумент -key, то создать частный RSA ключ, исходя из параметров конфигурационного файла)
- -rand имена-файлов-через-двоеточие (источник случайных данных)
- -newkey rsa:число-бит | dsa:файл-параметров (создать запрос на сертификат и частный ключ)
- -key файл-с-частным-ключом (в формате PKCS#8 для PEM)
- -keyform PEM | DER (PEM; формат файла с частным ключом)
- -keyout имя-файла-для-создаваемого-ключа (по умолчанию задаётся в конфигурационном файле)
- -nodes (не шифровать создаваемый ключ)
- -md5 | -sha1 | -md2 | -md2c (используемый алгоритм хеширования; для DSA всегда SHA1)
- -config имя-конфигурационного-файла (задаётся при компиляции или берётся из переменной окружения OPENSSL_CONF)
- -subj имя-объекта (задаётся в формате: /тип=значение/. )
- -x509 (создавать самоподписанный сертификат вместо запроса на сертификат)
- -days число-дней (30; сколько дней будет действовать самоподписанный сертификат)
- -set_serial серийный-номер (0; серийный номер самоподписанного сертификата)
- -extensions имя-секции (для -x509; см. параметр x509_extensions)
- -reqexts имя-секции (не для -x509; см. параметр req_extensions)
- -utf8 (значения полей как UTF8 вместо обычных ASCII)
- -nameopt опции-через-запятую (compat; как показывать имя запроса или имя создателя запроса; x509(1), секция NAME OPTIONS)
- -asn1-kludge (требуется для некоторых CA)
- -newhdr (добавить слово «NEW» в заголовок файла в формате PEM; требуется для некоторых CA)
- -batch
- -verbose
Для создания самоподписанного сертификата для самодельного корневого CA редактируем конфигурационный файл:
Создаём самоподписанный корневой сертификат (в CN указать что-то вида: «имя компании root Certificate»):
Посмотреть на результат
Выложить сертификат на HTTP сервер или распространить другими способами.
Импорт сертификата корневого CA в Firefox: Edit -> Preferences -> Advanced -> Certificates -> Manage Certificates -> Authorities -> Import.
Импорт сертификата корневого CA в Thunderbird: Tools -> Options -> Advanced -> Certificates -> Manage Certificates -> Authorities -> Import.
Импорт сертификата корневого CA в Mozilla: Edit -> Preferences -> Privacy & Security -> Certificates -> Manage Certificates -> Authorities -> Import.
Импорт сертификата корневого CA в IE: указать в обозревателе на содержащий сертификат файл и нажать правую кнопку, выбрать из меню «Установить сертификат» (Control Panel -> Users).
Создание запроса на сертификат сервера (CN должен быть равен имени хоста, которое будет указано в настройках клиентских программ; некоторые клиентские программы — Thunderbird — воспринимают записи типа *.company.ru):
Создание запроса на сертификат почтового клиента:
или создание отдельных запросов на сертификаты для подписи и шифрования почтовых сообщений (CN — д.б. разный):
При работе с сертификатами и CRL используется текстовая БД, которая хранится в отдельной директории (CA) и содержит файлы: сертификат CA (ca.crt), частный ключ CA (private/ca.key), серийный номер следующего сертификата (serial), индекс БД (index.txt). Нельзя запускать параллельно, так как никаких блокировок записи в файл не предусмотрено. Нельзя подписать 2 сертификата с одинаковым DN (TXT_DB error number 2). Первая колонка индекса БД содержит пометку:
- V — сертификат действителен
- E — срок действия сертификата истёк
- R — сертификат отозван
Параметры для команды подписи сертификата (openssl ca) хранятся в секции, имя которой задаётся параметром default_ca в секции ca конфигурационного файла или ключом -name в командной строке:
- database имя-файла-БД-сертификатов
- serialfile имя-файла (содержит следующий серийный номер в шестнадцатеричном виде)
- new_certs_dir (имя директории для новых сертификатов; см. -outdir)
- certificate (имя файла с сертификатом CA; см. -cert)
- private_key (имя файла с частным ключом CA; см. -keyfile)
- default_days (на сколько дней сертифицировать сертификат; см. -days)
- default_startdate (-startdate; YYMMDDHHMMSSZ; время начала действия сертификата)
- default_enddate (-enddate; YYMMDDHHMMSSZ; время конца действия сертификата)
- default_crl_hours (-crlhours)
- default_crl_days (-crldays)
- default_md (-md; алгоритм-хеширования)
- policy (-policy; имя секции с описанием политики CA)
- x509_extensions (-extensions)
- crl_extensions (-crlexts)
- preserve (-preserveDN; сохранять порядок поле DN из запроса)
- email_in_dn no (-noemailDN)
- msie_hack (-msie_hack)
- nameopt (формат для вывода описания сертификата; см. openssl x509 -nameopt)
- certopt (формат для вывода описания сертификата; см. openssl x509 -certopt)
- copy_extensions none | copy | copyall (тип обработки расширений в запросе; copy — копировать те расширения, которых ещё нет в сертификате; copyall — копировать с замещением имеющихся значений (не рекомендуется))
- RANDFILE (имя файла источника случайных данных для создаваемого ключа)
- oid_file (список дополнительных объектов; каждая строка файла содержит: составной номер объекта, короткое имя, полное имя)
- oid_section (имя секции с описанием дополнительных объектов: короткое-имя=номер)
Секция с описанием политики содержит переменные, имена которых совпадают с именами поле DN (поля запроса, имена которых отсутствуют в описании политики, молча удаляются, если не указан ключ -preserveDN), а значения могут быть следующими:
- match (значение поля в запросе должно соответствовать этому полю в сертификате CA)
- supplied (поле должно присутствовать в запросе)
- optional (поле может присутствовать в запросе)
Параметры для команды подписи сертификата (openssl ca):
- -verbose
- -batch (подписать все сертификаты без вопросов)
- -config имя-конфигурационного-файла (задаётся при компиляции или берётся из переменной окружения OPENSSL_CONF)
- -name имя-секции-конфигурационного-файла
- -in имя-файла-содержащего-запрос-на-подпись-сертификата
- -ss_cert самоподписанный-сертификат-на-подпись
- -spkac имя-файла (публичный ключ, подписанный Netscape, на подпись)
- -infiles имя-файла . (список запросов на подпись)
- -out имя-файла (stdout; в этот файл выводится подписанный сертификат и его описание)
- -outdir имя-директории (каждый подписанный сертификат выводится в эту директорию в файл с именем, сосотоящим из шестнадцатеричного серийного номера и суффикса «.pem»)
- -notext (не выводить текстовую форму сертификата)
- -cert имя-файла-с-сертификатом-CA
- -keyfile имя-файла-с-частным-ключом-CA
- -passin источник-пароля для ключа
- -startdate YYMMDDHHMMSSZ (время начала действия сертификата в формате ASN1 UTCTime)
- -enddate YYMMDDHHMMSSZ (время конца действия сертификата в формате ASN1 UTCTime)
- -days количество-дней-действия-сертификата
- -md алгоритм-хеширования (md5, sha1, mdc2)
- -policy имя-секции-с-описанием-политики-CA
- -msie_hack (для certenr3, Xenroll не требует этой опции)
- -preserveDN (порядок полей DN брать не из секции политики, а из запроса; для certenr3)
- -noemailDN (удалить почтовый адрес из основной части сертификата, оставив его только в поле altName расширения)
- -extensions имя-секции (x509_extensions; секция содержит описание расширения сертификата, добавляемые при подписании; даже пустая секция влечёт создание сертификата V3, иначе V1)
- -extfile имя-файла (читать описание расширения сертификата из этого файла; можно задавать секцию файла с поомощью -extensions)
Параметры для работы с CRL (Certificate Revocation List):
- -gencrl (создать CRL)
- -crldays число-дней-до-следующего-CRL (помещается в поле nextUpdate)
- -crlhours число-часов-до-следующего-CRL
- -revoke имя-файла-с-отзываемым-сертификатом
- -crl_reason unspecified | keyCompromise | CACompromise | affiliationChanged | superseded | cessationOfOperation | certificateHold | removeFromCRL
- -crl_hold holdInstructionNone | holdInstructionCallIssuer | holdInstructionReject (инструкция для certificateHold)
- -crl_compromise YYYYMMDDHHMMSSZ (время происшествия для keyCompromise)
- -crl_CA_compromise YYYYMMDDHHMMSSZ (время происшествия для CACompromise)
- -subj имя-объекта (заместить имя объекта из запроса; /type0=value0/. )
- -crlexts имя-секции-расширения-CRL (даже пустая секция влечёт создание списка V2, иначе V1; задаёт расширение CRL, но не расширение элемента CRL)
Для подписи сертификатов самодельным корневым CA редактируем конфигурационный файл:
Подпись запроса на сертификат сервера от имени собственного корневого CA:
Подпись запросов на сертификаты почтового клиента от имени собственного корневого CA:
Отзыв сертификата и создание CRL:
Файлы в формате PKCS#12 (Personal Information Exchange Syntax Standard) содержат сертификат и частный ключ, предназначены для передачи подписанного сертификата клиента от CA клиенту.
Команда разбора файлов в формате PKCS#12 (openssl pkcs12) имеет следующие ключи:
- -in имя-разбираемого-файла-PKCS12
- -out имя-файла (stdout; сертификаты и частные ключи записываются в формате PEM)
- -passin источник-пароля для входного файла
- -passout источник-пароля для выходного файла
- -nout (не выводить ключи и сертификаты в выходной файл)
- -clcerts (выводить только клиентские сертификаты)
- -cacerts (выводить только CA сертификаты)
- -nocerts (не выводить сертификаты)
- -nokeys (не выводить личные ключи)
- -info (выводить дополнительную информацию: использованные алгоритмы и т.д.)
- -des3 (по умолчанию; шифровать личные ключи алгоритмом 3DES)
- -des (шифровать личные ключи алгоритмом DES)
- -idea (шифровать личные ключи алгоритмом IDEA)
- -nodes (не шифровать личные ключи)
- -nomacver (не проверять целостность файла)
- -twopass (использовать отдельные пароли для шифрования и проверки целостности; не рекомендуется, т.к. многие программы этого не умеют)
Команда экспорта сертификатов в формате PKCS#12 (openssl pkcs12 -export) имеет следующие ключи:
- -in имя-файла (stdin; входной файл в формате PEM, содержащий сертификаты и ключи)
- -out имя-файла (stdout; сертификаты и частные ключи записываются в формате PKCS 12)
- -inkey имя-файла-с-приватным-ключом
- -name имя-пользователя (этот текст обычно показывается при импорте)
- -certfile имя-файла (файл содержит дополнительные сертификаты)
- -caname название-сертификата (некоторые программы показывают этот текст при импорте)
- -passin источник-пароля для входного файла
- -passout источник-пароля для выходного файла
- -chain (поиск в БД и включение в выходной файл всех сертификатов, на которые есть ссылки)
- -descert (шифрование сертификата 3DES; некоторые программы не смогут его расшифровать при импорте; по умолчанию частный ключ шифруется 3DES, сертификат — RC2-40)
- -keypbe алгоритм-шифрования-частного-ключа
- -certpbe алгоритм-шифрования-сертификата
- -keyex (для MS; частный ключ предназначен для обмена)
- -keysig (для MS; частный ключ предназначен для подписи; экспортный контроль разрешает ключи произвольной длины для подписи и только 512 бит для шифрования)
- -nomaciter (для совместимости с MSIE 4.0; не делать итераций HMAC)
- -noiter (для совместимости с MSIE 4.0; не делать итераций при шифровании)
- -rand имена-файлов-через-двоеточие (источник случайных данных)
Экспорт почтовых сертификатов клиента (запрашивается пароль для расшифровки ключа и пароль для шифрования на время передачи, т.к. включает приватный ключ!):
Импорт сертификатов и приватных ключей в формате PKCS #12 в Mozilla: Edit -> Preferences -> Privacy & Security -> Certificates -> Manage Certificates -> Your Certificates -> Import.
Ручной выбор сертификата в Mozilla: Edit -> Preferences -> Privacy & Security -> Certificates -> Ask Every Time.
Импорт сертификатов и приватных ключей в формате PKCS #12 в Thunderbird: Tools -> Options -> Advanced -> Manage Certificates -> Your Certificates -> Import.
Импорт сертификатов и приватных ключей в формате PKCS #12 в MS Outlook: Tools, Options and Security, import/export.
Настройка использования полученных сертификатов в Mozilla и Thunderbird: Edit -> Mail & Newsgroups Account Setting -> Security (в требуемой учётной записи); выбрать сертификат, содержащий ключи для подписи, и сертификат с ключами для шифрования.
Настройка использования полученных сертификатов в Thunderbird: Tools -> Mail & Newsgroups Account Setting -> Security (в требуемой учётной записи); выбрать сертификат, содержащий ключи для подписи, и сертификат с ключами для шифрования.
Для шифрования сообщения необходимо иметь сертификат получателя с его публичным ключом. Проще всего получить его из подписанного контрагентом сообщения (Netscape, Thunderbird и MS Outlook Express извлекают все публичные ключи из подписанных писем и складывают их в архив самостоятельно — на всякий случай).
Установка 1.0.2q (1.1.0j, 1.1.1a не проходят тесты) на Linux Fedora 10 (экзотика)
- получить дистрибутив и разархивировать его
- доставить пакеты — perl-Module-Load-Conditional
- ./config —prefix=/usr/local/openssl1.0.2q —openssldir=/usr/local/openssl1.0.2q/etc [shared] enable-weak-ssl-ciphers enable-md2 enable-rc5 zlib # некоторые ключи
- —prefix=каталог-установки (по умолчанию /usr/local)
- —openssldir=каталог-файлов-конфигурации (по умолчанию /usr/local/ssl)
- —api=версия (не собирать устаревшее в этой версии)
- —with-zlib-include=
- —with-zlib-lib=
- —with-rand-seed=список-через-запятую (os — по умолчанию, getrandom, devrandom, egd, rdcpu)
- shared
- no-asm
- no-async
- no-comp
- no-алгоритм
- no-протокол
- enable-weak-ssl-ciphers
- enable-md2
- enable-rc5
- zlib
- reconfigure (используются сохоранённые данные из configdata.pm, посмотреть — «./configdata.pm —help»)
- make depend
- make
- make test
- make install
- [make install_docs_html]
- [make linux-shared]
- bin/ (c_rehash, openssl — шифрует, считает контрольные суммы, генерирует сертификаты и т.д.)
- lib/ (libcrypto.a, libssl.a)
- lib/engines/ (пусто)
- lib/pkgconfig/
- include/openssl/
- каталог-файлов-конфигурации
- man/
- [share/doc/openssl/html/
] - certs/ (здесь будут храниться сертификаты)
- private/ (здесь будут храниться ключи)
- openssl.cnf
- misc
- CA.pl
- CA.sh
- c_hash
- c_info
- c_issuer
- c_name
- tsget
Установка OpenSSL 0.9.7a на Fedora Core 3
OpenSSL 0.9.7a-40 (заплатки безопасности наложены, но почему не OpenSSL 0.9.7e?) устанавливается вместе с FC3: пакеты openssl и openssl-devel (pyOpenSSL-0.6-1.p23, perl-Crypt-SSLeay-0.51-5, pyOpenSSL-0.6-1.p23). IDEA, MD2C и RC5 отсутствуют, чтобы избежать проблем с патентами.
- Пакеты содержат:
- /usr/bin/openssl (шифрует, считает контрольные суммы, генерирует сертификаты и т.д. — мальчик за всех)
- /lib — libcrypto.so.0.9.7a, libssl.so.0.9.7a
- /usr/lib — libcrypto.a, libcrypto.so, libssl.a, libssl.so, pkgconfig/openssl.pc
- /usr/share/ssl
- CA/private (root:root 700)
- cert.pem -> certs/ca-bundle.crt
- certs/Makefile
- certs/ca-bundle.crt
- certs/make-dummy-cert
- lib/
- misc/CA
- misc/c_hash
- misc/c_info
- misc/c_issuer
- misc/c_name
- openssl.cnf
- private/
- /usr/share/doc/openssl-0.9.7a/
- /usr/share/man/ (в man1/, в man3/, man5/config.5ssl, man7/)
- /usr/include/openssl/
Установка OpenSSL 0.9.6 на Linux Red Hat 7.1
OpenSSL 0.9.6 устанавливается вместе с RH 7.1: пакеты openssl и openssl-devel (а также пакет openssl095a-0.9.5a-1 для совместимости). Причем пакет openssl неудаляем (libcrypto.so.1 и libssl.so.1 требуются для python, который нужен огромному числу других пакетов). IDEA и RC5 отсутствуют, чтобы избежать проблем с патентами. Стал значительно медленее (на некоторых тестах в 2.5 раза!) по сравнению с 0.9.5a, потому что скомпилирован с меньшим уровнем оптимизации (самостоятельно собранная под Solaris библиотека 0.9.6b чуть быстрее, чем 0.9.5a).
- Пакеты содержат:
- /usr/bin/openssl (шифрует, считает контрольные суммы, генерирует сертификаты и т.д. — мальчик за всех)
- /usr/lib — libcrypto.so.0.9.6 и libssl.so.0.9.6, libcrypto.a, libcrypto.so, libssl.a, libssl.so
- /usr/share/ssl
- cert.pem
- certs/Makefile
- certs/ca-bundle.crt
- lib
- misc/CA
- misc/c_hash
- misc/c_info
- misc/c_issuer
- misc/c_name
- openssl.cnf
- private
- /usr/share/doc/openssl-0.9.6/
- /usr/share/man/ (в man1/, в man3/, man5/config, man7/des_modes)
- /usr/include/openssl/
Установка OpenSSL 0.9.5a на Linux Red Hat 7.0
OpenSSL 0.9.5a устанавливается вместе с RH 7.0: пакеты openssl и openssl-devel. Причем пакет openssl неудаляем (libcrypto.so.0 и libssl.so.0 требуются для python, который нужен огромному числу других пакетов).
Установка 0.9.5a/0.9.6b на Solaris и Linux Red Hat 6.2
- получить дистрибутив и разархивировать его
- ./config
- в Solaris добавить /usr/ccs/bin к PATH
- make
- make test (тщательность тестирования впечатляет — и время тоже)
- make install (помещает 5MB в /usr/local/ssl, для RH 4.0 необходимо вручную создать библиотеки и закоментировать вызовы mkdir-p.pl)
- man
- man1, man3, man5, man7
- bin (c_rehash, openssl — шифрует, считает контрольные суммы, генерирует сертификаты и т.д. — мальчик за всех)
- lib (libcrypto.a, libssl.a)
- include/openssl/
- misc
- CA.pl
- CA.sh
- c_hash
- c_info
- c_issuer
- c_name
- der_chop
- certs (здесь будут храниться сертификаты)
- private
- openssl.cnf
- man
Ключи config:
- —prefix=директория (по умолчанию /usr/local/ssl)
- no-asm
- no-тип-шифрования (no-rc5 и no-idea, чтобы избежать проблем с патентами)
Скорость (openssl speed) на P4 2800 MHz (Intel D915PLB), FC3:Скорость (openssl speed) на PIII 917MHz 😉 Linux RedHat:Скорость (openssl speed) на SparcServer10 Solaris 2.5:Скорость (openssl speed) на SparcStation4 Solaris 2.5:Изменения в 0.9.7b (2003.04.10) по сравнению с 0.9.7: возможность сборки без драйверов аппаратных устройств шифрования; защита от некоторых видов нетривиальных атак. Изменения в 0.9.7 по сравнению с 0.9.6i: поддержка алгоритма Rijndael (AES); слита ветка engine (бинарной совместимости нет) и добавлены новые типы оборудования; утилита, проверяющая наличие аппаратных устройств шифрации и их возможности; ключ «-noverify» для «openssl passwd»; новая субкоманда «openssl ca -status»; новая субкоманда «openssl ca -updatedb»; новая субкоманда «openssl ca -extfile»; OCSP (Online Certificate Status Protocol) и улилиты работы с ним («openssl ocsp»); опция -set_serial для команд req и x509; опция -subj для команд req и ca позволяет задавать или подменять информацию о субъекте при запросе; опции -verbose и -batch для команды «openssl req»; ключ «-HTTP» в программе s_server; опции nameopt и certopt в файле конфигурации ca; опция copy_extensions для команды «openssl ca»; поддержка CRL V2 (и ключи для «openssl verify», smime, s_client, s_server); поддержка Kerberos 5; сжатие (zlib) для TLS; опция utf8 для «openssl req»; поддержка Subject Information Access extension; изменен формат конфигурационного файла; правила выбора алгоритма шифрования COMPLEMENTOFALL и COMPLEMENTOFDEFAULT. Изменения в 0.9.6i по сравнению с 0.9.6b: поддержка большого количества оборудования аппаратной шифрации, исправлены критические ошибки. Изменения в 0.9.6b по сравнению с 0.9.6: исправлены ошибки и заделаны дырки в защите, ключ «-rand» для s_client и s_server. Изменения в 0.9.6 по сравнению с 0.9.5a: MD4, SSL опции (в которых я не разбираюсь), поддержка разделяемых библиотек (хотя в RH 7.0 разделяемые библиотеки есть и для 0.9.5a), пароли в стиле MD5. |
- источник OpenSSL
- стандарт Secure Sockets Layer (SSL v2/v3)
- An introduction to the SSL protocol and the handshake process. (Netscape)
- ssl.ca-0.1.tar (пример использования OpenSSL)
- SSL Certificates HOWTO (использование OpenSSL)
- использование расширений X509V3
- apache mod_ssl FAQ (заброшен в 2008 году, документация к mod_ssl)
|