Openssl как узнать версию windows

Обновлено: 05.07.2024

Я смотрел надежный и портативный способ проверить версию OpenSSL на GNU /Linux и других системах, поэтому пользователи могут легко обнаружить, должны ли они обновлять SSL из-за ошибки Heartbleed.

Я думал, что это будет легко, но я быстро столкнулся с проблемой на Ubuntu 12.04 LTS с последним OpenSSL 1.0.1g:

Я ожидал увидеть полную версию, но вместо этого получил следующее:

К моему неприятному удивлению, письмо версии не показано. Нет, нет, нет, просто «1.0.1», и все. Указанные даты также не помогают обнаружить (не) уязвимую версию.

Отличие между 1.0.1 (a-f) и 1.0.1g имеет решающее значение.

  • Что такое надежный способ проверки версии, желательно перекрестный дистрибутив?
  • Почему не отображается буква версии? Я не смог проверить это ни на что другое, кроме Ubuntu 12.04 LTS.

Другие также сообщают об этом. Несколько примеров:

Некоторые (специфические для дистрибутива) предложения, вкатывающиеся в:

Проверка наличия еще старой версии OpenSSL:

  • Это не совсем достоверно, но вы можете попробовать lsof -n | grep ssl | grep DEL . См. Heartbleed: как надежно и переносимо проверить OpenSSL версии? о том, почему это может не сработать для вас.

Оказывается, обновление пакета OpenSSL на Ubuntu и Debian не всегда достаточно. Вы также должны обновить пакет libssl1.0.0 и -then- проверить, если openssl version -a указывает built on: Mon Apr 7 20:33:29 UTC 2014 .

В зависимости от даты, отображаемой вашей версией OpenSSL, кажется, что вы видите полную версию, отображаемую там.

Итак, я собираюсь продолжить и утверждать, что openssl version -a - это правильный кросс-дистрибутивный способ отображения полной версии OpenSSL, установленной в системе. Кажется, что это работает для всех дистрибутивов Linux, к которым у меня есть доступ, и - это метод, предложенный в help.ubuntu. com OpenSSL, а также . Ubuntu LTS 12.04 поставляется с vanilla OpenSSL v1.0.1, который является версией, которая выглядит как сокращенная версия, из-за отсутствия буквы, следующей за ней.

Сказав это, кажется, что в Ubuntu (или как они упаковывают OpenSSL) есть ошибка major , в которой openssl version -a продолжает возвращать оригинал 1.0.1 от 14 марта 2012 года, независимо от того, был ли OpenSSL обновлен до любой из более новых версий. И, как и в большинстве случаев, когда идет дождь, оно льется.

Ubuntu не является единственным основным дистрибутивом в привычке к обратному обновлению в OpenSSL (или других пакетах), чем полагаться на обновленные обновления и нумерацию версий, которые все распознают. В случае OpenSSL, где номера версий букв представляют собой только исправления ошибок и обновления безопасности, это кажется почти непонятным, но мне сообщили, что это может быть из-за FIPS-валидированный плагин для крупных дистрибутивов Linux, упакованных в OpenSSL. Из-за требований, связанных с повторной проверкой, которые вызывают из-за каких-либо изменений, даже изменения, которые подключают дыры в безопасности, заблокированы версией.

Например, в Debian исправленная версия отображает номер версии 1.0.1e-2+deb7u5 вместо исходной версии 1.0.1g .. р>

В результате в настоящее время нет надежного переносимого способа проверки версий SSL в дистрибутивах Linux , поскольку все они используют свои собственные патч-файлы и обновления с различными схемами нумерации версий. Вам нужно будет найти номер фиксированной версии для каждого разного дистрибутива Linux, который вы запускаете, и проверить установленную версию OpenSSL на нумерацию конкретной версии этого дистрибутива, чтобы определить, работают ли на вашей уязвимой версии или нет.

Если вы хотите что-то по-настоящему кросс-платформенное, проверить на наличие самой уязвимости, а не полагаться на номера версий.

У вас может быть код, который сообщает номер версии, который, как известно, уязвим, , но фактический код не уязвим . И обратный - незащищенный код - может быть еще хуже!

Многие поставщики, которые объединяют продукты с открытым исходным кодом, такие как OpenSSL и OpenSSH, будут выборочно модифицировать срочные исправления для более старой версии кода, чтобы поддерживать стабильность и предсказуемость API. Это особенно справедливо для «долгосрочных выпусков» и платформ устройств.

Но поставщики, которые делают это молча (без добавления собственного суффикса строки версии), запускают риск запуска ложных срабатываний в сканерах уязвимостей (и запутывают пользователей). Чтобы сделать это прозрачным и поддающимся проверке, некоторые поставщики присоединяют свои собственные строки к основной версии пакета. И Debian (OpenSSL), и FreeBSD (в OpenSSH, через директиву VersionAddendum sshd_config) иногда делают это.

Поставщики, которые этого не делают, вероятно, делают это, чтобы свести к минимуму вероятность поломки из-за множества прямых и косвенных способов, которые другие программы проверяют номерами версий.

Таким образом, это может выглядеть так:

С такими вещами в игре вам лучше, если вы не доверяете номер версии.

К сожалению, я не уверен, что есть кросс-платформенный способ сделать это. Как я обсуждаю в блога , версия OpenSSL, отображаемая на Ubuntu 12.04 REMAINS 1.0.1 после обновления до фиксированной версии.

Только для Ubuntu 12.04 вы можете узнать, были ли вы обновлены, если все из приведенных ниже истинны:

  1. dpkg -s openssl | grep Version показывает версию 1.0.1-4ubuntu5.12 или новее.
  2. dpkg -s libssl1.0.0 | grep Version показывает версию 1.0.1-4ubuntu5.12 или новее.
  3. openssl version -a показывает дату «встроенной» 7 апреля 2014 года или позже.

Спасибо @danny за дополнительную информацию.

Попробуйте следующее. Он извлечет все строки из библиотеки crypto , с которой связан ssh. Он производит более одной строки вывода, но при необходимости может быть преобразован в 1 строку.

например. на Gentoo до появления

приведенная выше команда приводит к

Вы можете ввести это (проверено с помощью GnuWin32 OpenSSL двоичная версия 1.0.1.6 от 2014 г. -01-14), или просто используйте сценарий в комментарии ниже этого. Это более точно и проще!

После подключения типа B и вы увидите на уязвимом узле, и вы не будете отключены:

Вы получите ответ сердечного ритма, похожий на этот.

На исправленном хосте вы увидите ответ, подобный ниже, и вы будете отключены:


OpenSSL — универсальный криптографический инструмент, построенный вокруг протоколов SSL/TLS и сертификатов X.509.

Помимо того, что этот инструмент позволяет работать с соединениями SSL/TLS, сертификатами X.509, он может делать множество других полезных вещей: шифровать и расшифровывать файлы, создавать и проверять цифровые подписи, проверять числа на простоту, тестировать производительность компьютера и другое.

Содержание

Вопросы и ответы

Раздел написан на основе OpenSSL Command-Line HOWTO [1]

Введение

Как определить какую версию OpenSSL я использую?

Использовать опцию version:

Расширенная информация с опцией -a:

Как получить список доступных команд?

Вызвать с неправильным ключом (например, help или -h).

Аналогично с подкомандами:

Как посмотреть список доступных шифров?

Использовать команду ciphers:

Измерение производительности

Как измерить производительность системы с помощью openssl?

Пример для 2.16GHz Intel Core 2.

Каждый тест можно вызывать отдельно:

Как измерить производительность сетевого соединения?

Помимо этого простейшего измерения у подкоманды s_time есть множество других возможностей:

Сэмулировать web-сервер с помощью openssl s_server:

Сертификаты

Как сгенерировать самоподписной сертификат?

Создать файл mycert.pem, в котором будет и секретный ключ и открытый сертификат, основанный на нём. Сертификат будет действителен в течение 365 дней; ключ (благодаря опции -nodes) будет нешифрованным.

После вызова команды надо будет ответить на несколько вопросов: Country Name, State, City и так далее. На вопрос “Common Name” нужно отвечать именем сервера, по которому будут обращаться люди.

Как сгенерировать запрос сертификата у VeriSign?

Секретный ключ в файле mykey.pem и запрос на сертификат myreq.pem:

Если ключ уже есть, и его надо использовать только для генерации сертификата, используется команда попроще:

Или, с информацией для сертификата прямо в командной строке:

Не допускайте ошибок в названиях! Каждый символ важен.

Файл с ключом нужно сохранить в надёжном месте.

Как проверить новый сертификат?

Подкоманда s_server предоставляет простой, но эффективный метод тестирования. В примерах ниже предполагается, что ключ и сертификат хранятся в файле mycert.pem.

Запустите тестовый сервер на машине, на которой будет использоваться сертификат. По умолчанию, открывается порт 4433; другой порт можно задать опцией -accept.

Как получить удалённый сертификат?

С помощью openssl и sed:

Можно вернуть данные openssl, например, для того чтобы выяснить, для каких дат он действителен:

Как извлечь какую-либо информацию из сертификата?

В SSL-сертификате есть много информации, в частности:

  • кто выдал сертификат (issuer);
  • насколько долго он действителен (valid dates);
  • получатель сертификата (subject);
  • разнообразная криптографическая информация.

Опция текст даёт весь объём информации:

Другие опции дают другую информацию:

Извлечение открытого ключа, который требуется для проверки цифровой подписи (дайджеста):

Превратить pfx в pem:

Проверка сертификата

Приложения, слинкованные с библиотеками OpenSSL, могут проверять подлинность сертификатов, выданных сервером сертификатов (certificate authority, CA).

Как проверить сертификат?

Использовать подкоманду verify:

  • error 10 at 0 depth lookup:certificate has expired. Время действия сертификата истекло.
  • error 18 at 0 depth lookup:self signed certificate. Если не указать явным образом, openssl не будет проверять самоподписные сертификаты (self-signed certificate).

Какие центры сертификации распознаёт OpenSSL?

При сборке OpenSSL в нём настраивается местоположение OpenSSL-файлов (Directory for OpenSSL files). Этот параметр задаётся опцией --openssldir, передающейся конфигурационному скрипту. В этом каталоге, как правило, хранится информация о центрах сертификации, которым доверяет система.

По умолчанию, этот каталог находится в /usr/local/ssl, но большинство сборщиков размещает его в других местах, таких как /etc/pki/tls (Red Hat/Fedora), /etc/ssl (Gentoo), /usr/lib/ssl (Debian) или /System/Library/OpenSSL (Macintosh OS X).

Посмотреть, какой именно каталог используется в конкретной инсталляции, можно с помощью опции version(параметр OPENSSLDIR):

Внутри данного каталога есть подкаталог certs/, в котором находятся файлы трёх разных типов:

  1. Большой файл под названием cert.pem, объёмистый сборник многих сертификатов от признанных общеизвестных центров сертификации, таких как VeriSign и Thawte.
  2. Множество маленьких файлов с расширением .pem, каждый из которых содержит сертификат от отдельного центра сертификации;
  3. Символические ссылки в со странными именами вида 052eae11.0. Как правило, для каждого .pem-файла есть такая ссылка.

Первая часть странного имени ссылки — это, на самом деле, хэш, основанный на сертификате внутри .pem-файла, на который эта ссылка указывает. Расширение файла это итератор (то есть, номер), поскольку теоретически возможно, что разные сертификаты укажут на одинаковый хэш.

Например, ссылка f73e89fd.0 указывает на файл vsignss.pem. Значит, сертификат соответствует хэшу, который равен имени ссылки:

Когда приложение получает удалённый сертификат, оно сначала проверяет, есть ли этот сертификат в cert.pem и, если нет, смотрит в файле, соответствующем хэшу сертификата. Если такой файл найден, сертификат считается верным.

Нужно иметь в виду, что некоторые приложения, такие как Sendmail, например, позволяют во время исполнения указывать местоположение сертификатов, а некоторые, например Pine, нет.

Как мне заставить OpenSSL признавать сертификат?

Сертификат, которому нужно доверять, должен быть размещён в каталоге certs/. После этого необходимо создать хэшированную символическую ссылку на него. Вот небольшой скрипт, который делает это:

Клиенты и серверы для командной строки

Подкоманды s_client и s_server предоставляют возможность для запуска SSL-клиентов для командной строки.

Как подключиться к безопасному SMTP-серверу?

С помощью подкоманды s_client можно проверить или даже использовать SMTP-сервер с поддержкой SSL.

Безопасные SMTP-серверы могут предлагать безопасные соединения на портах: 25 (TLS), 465 (SSL) и 587 (TLS). Где-то в районе релиза 0.9.7 у openssl появилась возможность использовать STARTTLS в ходе общения с SMTP-серверами.

Чтобы использовать для обозначения конца строки именно CRLF, а не CR или LF, используется опция -crlf. Это важно особенно для Qmail.

Как подключиться к [какому-либо] безопасному серверу?

На момент написания openssl поддерживал TLS из командной строки только с SMTP, поэтому для других протоколов нужно использовать прямые SSL-соединения.

Как запустить SSL-сервер из командной строки?

Подкоманда s_server позволяет запустить сервер с поддержкой SSL прямо из командной строки; сервер предназначен только для проверки и отладки. Для полноценной работы рекомендуется использовать stunnel.

Подкоманда s_server работает намного лучше, если есть сертификат; когда его нет, её возможности сильно сокращаются.

Дайджесты

Создание дайджестов (криптографических контрольных сумм) с помощью подкоманды dgst — одна из наиболее распространённых задач, выполняемых с помощью openssl.

Как создавать дайджесты MD5 или SHA1?

Дайджесты создаются с помощью подкоманды dgst:

Дайджест MD5 эквивалентен дайджесту, создаваемому известной утилитой md5sum, хотя выводится в другом формате:

То же верно и для дайджестов SHA1 и программы sha1sum:

Как подписать дайджест?

Для того, чтобы быть уверенным, что дайджест никто не изменял, его можно подписать с помощью своего закрытого ключа.

Подписать дайджест SHA1 для файла foo-1.23.tar.gz:

Как проверить подписанный дайджест?

Для того чтобы проверить правильность дайджеста, нужен файл, на основе которого был получен дайджест, сам подписанный дайджест и открытый ключ того, кто подписывал дайджест:

Как создать запись типа digest для файла паролей Apache?

Формат базы паролей прост: список нескольких полей, разделённых двоеточиями. Поля:

  • имя пользователя (username);
  • область авторизации (authorization realm; AuthRealm);
  • MD5-суммы для этих полей и пароля.

Скрипт, представленный ниже, повторяет действие htdigest с той разницей, что выводит данные на стандартный поток вывода. Кроме того, он умеет считывать данные со стандартного потока ввода.

Какие ещё есть дайджесты?

Подкоманда list-message-digest-commands даёт список типов дайджестов, доступных в данной инсталляции.

Шифрование/расшифровка

Как закодировать что-то по методу base64?

Использовать опцию -base64.

Закодировать одну строку:

Без перевода строки (важно для паролей):

Опция -d выполняет обратный процесс (то есть, раскодирование):

Как зашифровать файл?

Простое шифрование файлов, вероятно, лучше делать инструментами типа GPG. Тем не менее, иногда может возникнуть необходимость зашифровать файл без развёртывания инфраструктуры ключей и сертификатов, а пользуясь одним только паролем. Второе, что нужно будет запомнить — это шифр, с помощью которого выполнялось шифрование.

Список поддерживаемых шифров есть на странице enc(1). Более просто (и более точно) узнать этот список у самой программы openssl.

Расшифровка файла на стороне получателя:

Можно не вводить парольную фразу постоянно при шифровании и расшифровке, а передавать её автоматически (подробнее: openssl(1); раздел "PASS PHRASE ARGUMENTS"). Формат аргумента прост:

Ошибки

В системных журналах обнаружились строки, которые, похоже, имеют отношение к OpenSSL или crypto:

В первом приближении определить, что не так, можно с помощью подкоманды errstr, которая умеет интерпретировать код ошибки. Код ошибки находится между "error:" и ":lib". В данном случае это 0407006A.

Ключи

Как сгенерировать ключ RSA?

Использовать подкоманду genrsa:

Как сгенерировать открытый ключ RSA?

С помощью подкоманды rsa можно создать открытую версию для закрытого ключа RSA:

Как сгенерировать ключ DSA?

Для построения ключей DSA нужен специальный файл параметров (parameter file), кроме того, операции с DSA медленнее чем аналогичные операции с RSA, в связи с этим, DSA используется не так часто, как RSA.

Если нужно сгенерировать только один ключ DSA, то это можно сделать одной командой, с помощью подкоманды dsaparam:

Если же нужно создавать несколько ключей DSA, перед тем как их генерировать, можно сделать общий файл параметров. Файл параметров генерируется сравнительно медленно, а файлы ключей очень быстро.

Как создать ключ, основанный на эллиптических кривых (elliptic curve key)?

Процедуры для работы с эллиптическими кривыми были добавлены в openssl, начиная с версии 0.9.8. Работа с этими процедурами выполняется через подкоманду ecparam.

Как создать открытый EC ключ?

С помощью подкоманды ec можно создать открытую версию для закрытого ключа EC (elliptic curve):

Как удалить парольную фразу у ключа?

Каждый раз, когда запускается демон, использующий ключ, надо будет набирать парольную фразу. Её можно убрать.

Допустим, ключ, зашифрованный парольной фразой, находится в файле key.pem; после выполнения команды расшифрованный ключ будет в newkey.pem:

Если закрытый ключ (private key) и открытый сертификат хранятся в одном файле, нужно будет выполнить две команды:

Хэши для паролей

С помощью подкоманды passwd можно генерировать хэши паролей, которые совместимы со стандартными хэшами из /etc/passwd, /etc/shadow или файла паролей Apache.

Как сгенерировать хэш в стиле crypt?

Сгенерировать хэш очень просто:

Если salt для пароля известен, можно воссоздать хэш.

Как сгенерировать хэш пароля в стиле shadow?

В новых UNIX/Linux-системах вместо старого crypt-хэша используется новый, более стойкий хэш MD5. Его генерирование выполняется с помощью ключа -1:

В этом формате salt состоит из 8 символов; он находится между вторым и третьим знаком $, в данном случае это sXiKzkus.

Простые числа

Поскольку openssl активно использует механизмы для работы с простыми числами, не удивительно, что в нём есть соответствующие процедуры. Начиная с версии 0.9.7e (или где-то так), в openssl появилась подкоманда binary.

Как проверить, является ли число простым?

Передать число как аргумент к подкоманде prime. Результат будет не в десятичном, а в шестнадцатеричном виде.

Можно проверять и шестнадцатеричные числа:

Как сгенерировать набор простых чисел?

Сгенерировать множество чисел и оставить только простые среди них. Для генерирования последовательностей удобно использовать seq.

Случайные данные

Как генерировать случайные данные?

Используйте подкоманду rand.

На UNIX/Linux-системах, в которых есть файл /dev/urandom, похожего эффекта можно добиться иначе, и иногда с лучшим результатом даже:

Между устройствами random и urandom есть разница. Дополнительная информация в random(4) для Linux и BSD или random(7D) для Solaris.

S/MIME

Много хороших примеров есть в smime(1).

Если сертификат не опознан, возникнет похожая ошибка:

Если нужно вытащить сертификат автора письма, для того, чтобы использовать его в дальнейшем, то нужна только первая часть команды:

Дальше этот сертификат можно или интегрировать в инфраструктуру OpenSSL, или сохранить его для будущего использования, например, такого:

Для того чтобы получить шифрование по умолчанию RC2-40 (оно, правда, слабое), нужно только сказать 'openssl, где находится сертификат:

Если есть уверенность, что на удалённой стороне есть современная поддержка SSL, можно использовать алгоритм шифрования посильнее чем DES:

Проверка версии OpenSSL

Определение используемой версии OpenSSL является важным первым шагом в подготовке генерации приватного ключа и запроса CSR. Ваша версия OpenSSL диктует криптографический алгоритм, который может использовать для генерации ключей и поддерживаемый протокол. К примеру, OpenSSL version 1.0.1 является первой версией, поддерживающей TLS 1.1 и TLS 1.2. Знание используемой версииf OpenSSL также важно когда вы решаете возникшие в процессе проблемы.

Команда для определения версии OpenSSL:

В этой команде, " -a " включит отображение следующей информации:

  • Номер версии и дата выхода (OpenSSL 1.0.2g 1 Mar 2016).
  • Опции библиотеки (options).
  • название директории где находятся сертификат и приватные ключи (OPENSSLDIR).

При вводе команды openssl version -a появится информация такого вида:

OpenSSL and CSR Creation

Первым шагом к получению SSL-сертификата является использование OpenSSL для создания запроса подписи сертификата (CSR), который может быть отправлен в центр сертификации (CA) (например, DigiCert). CSR содержит общее имя (ы), которое вы хотите, чтобы ваш сертификат был защищен, информация о вашей компании и ваш открытый ключ. Чтобы создать CSR, он должен иметь закрытый ключ, из которого извлекается открытый ключ. Это можно сделать, используя существующий закрытый ключ или создав новый закрытый ключ.

Примечание по безопасности. Из-за проблем с безопасностью, связанных с использованием существующего закрытого ключа, а также потому, что очень просто и совершенно бесплатно создавать закрытый ключ, мы рекомендуем создавать новый закрытый ключ при создании CSR.

Выбор вариантов генерации ключей

При создании ключа вы должны решить три вещи:

  • Алгоритм ключа Key Algorithm,
  • размер ключа Key Size
  • использование кодовой фразы Passphrase

Для ключевого алгоритма вам необходимо учитывать его совместимость. По этой причине мы рекомендуем использовать RSA. Однако, если у вас есть конкретная необходимость использовать другой алгоритм (например, ECDSA), вы также можете использовать его, но помните о проблемах совместимости, с которыми вы можете столкнуться.

Примечание. В этом руководстве рассматриваются только генераторы ключей с использованием алгоритма RSA.

Для размера ключа вам необходимо выбрать длину бита не менее 2048 при использовании RSA и 256 при использовании ECDSA; это самый маленький размер ключа, разрешенные для сертификатов SSL. Если вам не нужен более крупный размер ключа, мы рекомендуем придерживаться 2048 с RSA и 256 с ECDSA.

Примечание. В старых версиях OpenSSL, если не задан размер ключа, используется размер ключа по умолчанию 512. Любой размер ключа ниже 2048 считается незащищенным и никогда не должен использоваться.

Для ключевой фразы вам нужно решить, хотите ли вы ее использовать. Если используется, закрытый ключ будет зашифрован с использованием указанного метода шифрования, и его невозможно будет использовать без кодовой фразы. Потому что есть плюсы и минусы с обоими опциями, важно понимать последствия использования или не использования кодовой фразы. В этом руководстве мы не будем использовать кодовую фразу в наших примерах.

Создание приватного ключа

После принятия решения по алгоритму и размеру ключа, а также использованию кодовой фразы вы можете приступить к генерации своего закрытого (приватного) ключа.

Используйте следующую команду для генерации вашего закрытого ключа с использованием алгоритма RSA:

Эта команда генерирует закрытый ключ в вашем текущем каталоге с именем yourdomain.key (-out yourdomain.key) с использованием алгоритма RSA (genrsa) с длиной ключа 2048 бит (2048). Сгенерированный ключ создается с использованием формата OpenSSL под названием PEM.

Используйте следующую команду для просмотра необработанного, закодированного содержимого (формат PEM) закрытого ключа:

Несмотря на то, что содержимое файла может выглядеть как случайный фрагмент текста, на самом деле он содержит важную информацию о ключе. Используйте следующую команду для декодирования закрытого ключа и просмотра его содержимого:

Переключатель -noout отключает вывод кодированной версии закрытого ключа.

Извлечение открытого ключа

Файл закрытого ключа содержит как закрытый ключ, так и открытый ключ. Вы можете извлечь свой открытый ключ из своего файла закрытого ключа, если это необходимо.

Используйте следующую команду для извлечения открытого ключа:

Создание CSR

После создания секретного ключа вы готовы создать свою CSR. CSR создается с использованием формата PEM и содержит часть открытого ключа закрытого ключа, а также информацию о вас (или вашей компании).

Используйте следующую команду для создания CSR с использованием только что созданного закрытого ключа:

После ввода команды вам будет задан ряд вопросов. Ваши ответы на эти вопросы будут включены в CSR. Ответьте на вопросы, как описано ниже:

Некоторые из вышеуказанных вопросов CSR имеют значения по умолчанию, которые будут использоваться, если вы оставите пустой ответ и нажмите Enter. Эти значения по умолчанию извлекаются из файла конфигурации OpenSSL, расположенного в OPENSSLDIR (см. Проверка версии OpenSSL). Если вы хотите оставить вопрос пустым, не используя значение по умолчанию, введите «.». (период) и нажмите Enter.

Использование переключателя -subj

Другим вариантом при создании CSR является предоставление всей необходимой информации внутри самой команды с помощью -subj-переключателя.

Используйте следующую команду, чтобы отключить приглашения к запросам при создании CSR:

This command uses your private key file (-key yourdomain.key) to create a new CSR (-out yourdomain.csr) and disables question prompts by providing the CSR information (-subj).

Создание CSR с помощью одной команды

Вместо того, чтобы генерировать закрытый ключ, а затем создавая CSR двумя разными шагами, вы можете одновременно выполнять обе задачи.

Используйте следующую команду для создания как закрытого ключа, так и CSR:

Эта команда генерирует новый закрытый ключ (-newkey) с использованием алгоритма RSA с длиной ключа 2048 бит (rsa: 2048) без использования парольной фразы (-nodes), а затем создает файл ключа с именем yourdomain.key (- keyout yourdomain.key). Затем команда cгенерирует CSR с именем файла yourdomain.csr (-out yourdomain.csr), информация для CSR предоставляется (-subj).

Примечание. Хотя возможно добавление альтернативного имени объекта (SAN) в CSR с использованием OpenSSL, процесс немного сложнее. Если вам нужно добавить SAN в свой сертификат, это легко сделать, добавив их в виде примечания в форму заказа при покупке вашего сертификата ssl.

Проверка информации CSR

После создания вашей CSR с помощью секретного ключа мы рекомендуем проверить правильность информации, содержащейся в CSR, и что файл не был изменен или поврежден.

Используйте следующую команду для просмотра информации в вашей CSR перед отправкой ее в сертификационный центр.

Переключатель -noout отключает вывод кодированной версии CSR. Переключатель -verify проверяет подпись файла, чтобы убедиться, что он не был изменен. Выполнение этой команды дает вам следующий результат:

В первой строке выведенного выше вы увидите, что CSR была проверена (verify OK).

В четвертой строке поле Subject: содержит информацию, предоставленную вами при создании CSR. Убедитесь, что эта информация верна.

Если какая-либо информация неверна, вам нужно будет создать совершенно новІй запрос CSR для исправления ошибок. Это связано с тем, что файлы CSR имеют цифровую подпись, что означает, что даже если в файле изменяется один символ, он будет отклонен центром сертификации.

Отправка CSR в CA

Когда вы подготовите запрос CSR для оформления сертификата SSL, вам нужно использовать формат PEM - необработанный, закодированный текст CSR, который вы увидите при открытии его в текстовом редакторе.

Для того, чтобы просмотреть исходный вывод CSR:

Просмотр информации о сертификате

После получения сертификата от CA (например, DigiCert) мы рекомендуем убедиться, что информация в сертификате верна и соответствует вашему закрытому ключу. Вы делаете это, используя команду x509.

Используйте следующую команду для просмотра содержимого вашего сертификата:

Проверка соответствия ваших ключей

Чтобы проверить соответствие ваших общих и закрытых ключей, используйте ключ -modulus для генерации хэша вывода для всех трех файлов (закрытый ключ, CSR и сертификат).

Используйте следующие команды для генерации хэша модуля каждого файла:

Примечание. Вышеприведенные команды должны вводиться один за другим для генерации трех отдельных выходов.

Каждая команда выведет (stdin) =, а затем строку символов. Если результат каждой команды соответствует, то ключи для каждого файла одинаковы.

Однако, если есть какое-либо несоответствие, то ключи не совпадают, и сертификат не может быть установлен.

Ошибки рассогласования ключей обычно вызваны установкой сертификата на машине, отличной от той, которая используется для генерации CSR. Если вы столкнулись с ошибкой несоответствия ключа, вам необходимо выполнить одно из следующих действий:

  • Перенесите закрытый ключ из машины, используемой для генерации CSR, к тому, к которому вы пытаетесь установить сертификат.
  • Установите сертификат на машине с помощью закрытого ключа.
  • Создайте совершенно новый ключ и создайте новый CSR на машине, которая будет использовать сертификат.

Преобразование форматов сертификатов

По умолчанию OpenSSL генерирует ключи и CSR, используя формат PEM. Однако могут быть случаи, когда вам нужно преобразовать свой ключ или сертификат в другой формат, чтобы экспортировать его в другую систему.

PKCS № 12 для PEM

Примечание. Вам необходимо указать пароль, используемый для шифрования файла .pfx, чтобы преобразовать ключ и сертификат в формат PEM.

Формат DER использует кодировку ASN.1 для хранения сертификата или ключевой информации. Подобно формату PEM, DER хранит информацию о ключах и сертификатах в двух отдельных файлах и обычно использует те же расширения файлов (то есть .key, .crt и .csr). Расширение файла .der было использовано в приведенных ниже примерах для ясности.

Используйте следующую команду для преобразования сертификата, закодированного в PEM, в сертификат, закодированный DER:

Используйте следующую команду для преобразования закрытого ключа, закодированного в PEM, в закрытый закрытый ключ DER:

DER to PEM Используйте следующую команду для преобразования закодированного DER сертификата в сертификат, закодированный PEM:

Используйте следующую команду для преобразования закрытого ключа с кодировкой DER в закрытый секретный ключ PEM:

Одним из самых популярных инструментов для создания и управления SSL-сертификатами является библиотека OpenSSL. В этой статье я расскажу о часто используемых командах OpenSSL.

Некоторые аббревиатуры, относящиеся к сертификатам:

  • SSL – Secure Socket Layer (уровень защищённых cокетов).
  • CSR – Certificate Signing Request (запрос на получение сертификата).
  • TLS – Transport Layer Security (протокол защиты транспортного уровня).
  • PEM – Privacy Enhanced Mail (формат файлов для хранения и отправки криптографических ключей).
  • SHA – Secure Hash Algorithm (алгоритм криптографического хеширования).
  • PKCS – Public-Key Cryptography Standards (стандарты криптографии с открытым ключом).

1. Создание нового секретного ключа и запрос на получение сертификата

2. Создание самозаверяемого сертификата

Пример: для получения сертификата, действительного два года.

3. Верификация CSR-файла

Верификация необходима, чтобы отправленный в регистрационный центр CSR-файл содержал всю необходимую информацию.

4. Создание секретного RSA-ключа

Если нужно создать секретный RSA-ключ, используйте приведенную выше команду.

5. Удаление пароля-фразы из ключа

Если вы используете составной пароль (фразу) в файле ключа и работаете на Apache, то при каждом запуске нужно вводить секретную фразу. Если вас это раздражает, то можно использовать приведенную выше команду, чтобы удалить пароль-фразу из существующего ключа.

6. Верификация секретного ключа

Если вы сомневаетесь в файле ключа, то можете использовать данную команду.

7. Верификация файла сертификата

Если хотите проверить данные сертификата, такие как CN, OU и т.д., используйте приведенную выше команду, которая предоставит данные сертификата.

8. Верификация центра сертификации

Для проверки центра сертификации можно использовать приведенную выше команду.

9. Проверка хеш-значения сертификата

10. Преобразование формата DER в PEM

Центр сертификации предоставляет SSL-сертификат в формате .der . Если вам необходимо использовать его в формате apache или .pem , примените приведенную выше команду для соответствующего преобразования.

11. Преобразование формата PEM в DER

Если необходимо изменить формат .pem на .der .

Совет. Вы также можете включить цепочку сертификатов, передав параметр -chain, как показано в примере ниже.

13. Создание CSR с использованием существующего секретного ключа

Если не хотите создавать новый секретный ключ вместо существующего, выполните приведенную выше команду.

14. Проверка содержимого сертификата в формате PKCS12

PKCS12 является двоичным форматом, поэтому вы не сможете просмотреть его содержимое в текстовом редакторе. Для просмотра файла в формате PKCS12 используйте приведенную выше команду.

15. Преобразование формата PKCS12 в PEM-сертификат

Если нужно использовать существующий файл в формате pkcs12 на Apache или только в формате pem , в этом поможет приведенная выше команда.

16. Проверка SSL-сертификата определенного URL-адреса

Я часто использую эту команду для проверки SSL-сертификата URL-адреса. Это удобно для проверки данных протокола, шифрования и сертификата.

17. Определение версии OpenSSL

18. Проверка даты истечения срока действия PEM-файла

19. Проверка срока действия SSL-сертификата для URL-адреса

Команда позволяет контролировать дату истечения срока действия SSL- сертификата удаленно или для конкретного URL-адреса.

20. Проверка, принимается ли на URL-адресеSSL V2 или V

Чтобы проверить SSL V2:

Чтобы проверить SSL V3:

Чтобы проверить TLS 1.0:

Чтобы проверить TLS 1.1:

Чтобы проверить TLS 1.2:

21. Проверка того, принимается ли конкретный шифр на URL-адресе

Если хотите знать, принимаются ли некоторые слабые шифры, то можете использовать приведенную выше команду.

Надеюсь, что приведенные выше команды помогли вам узнать больше об использовании OpenSSL для управления SSL-сертификатами.

Дайте знать, что вы думаете по данной теме материала в комментариях. За комментарии, отклики, подписки, лайки, дизлайки огромное вам спасибо!

Пожалуйста, оставьте свои комментарии по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, подписки, лайки, отклики, дизлайки!

Читайте также: