✔️ Как установить самую последнюю версию OpenSSL на Windows 10
В эпоху кибервойн единственная разумная позиция – быть параноиком, а это означает, помимо прочего, быть параноиком по поводу обновлений программного обеспечения.
Взять к примеру OpenSSL.
Эта криптографическая библиотека с открытым исходным кодом, которая реализует протоколы Transport Layer Security (TLS) и Secure Sockets Layer (SSL), разработана для «защиты связи по компьютерным сетям от перехвата», но угадайте, что?
С самого начала она была пронизана ошибками.
Это может быть неизбежно, в определенной степени – в конце концов, мы говорим о программном обеспечении.
Несмотря на то, что вы не можете ничего сделать с ошибками, которые еще предстоит идентифицировать, вы можете по крайней мере защитить свои системы от тех ошибок, которые уже исправлены и задокументированы.
Жаль, что официальный сайт OpenSSL предлагает только исходники для Linux.
Хотя дистрибутивы Linux обычно поставляются с OpenSSL, это не никак относится к Windows … или, скажем, «дистрибутивам Windows».
Если вы хотите запустить его, вам нужен бинарник под Windows, и если вы не хотите его собирать самостоятельно, вы должны найти другой вариант.
В этой статье я покажу,как можно настроить OpenSSL в Windows, не имея дело при этом дела со сборкой из исходников.
Шаг 1. Скачать бинарник
Поиск бинарных файлов OpenSSL для Windows – непростая задача, но не отчаивайтесь.
Чтобы загрузить нужный, перейдите по ссылке:
Не дайте себя одурачить ни строкой Win32 в URL-адресе, ни навигацией, указывающей на казалось бы древнюю страницу загрузки еще с 2004 года.
Прокрутите страницу вниз до раздела «Download Win32 OpenSSL».
Теперь вам нужно выбрать правильный файл из этого списка.
Для каждой версии есть два основных типа: light и full.
Загрузите файл под названием «Win64 OpenSSL v1.1.0f» (или версию с более новой версией, как только она станет доступна), чтобы скачать фулл установщик.
Шаг 2. Запустите установщик
Мы рекомендуем установить OpenSSL вне вашей системной директории Windows.
Следуйте инструкциям по установке через GUI.
Шаг 3. Запустите бинарный файл OpenSSL
Чтобы начать работу с OpenSSL, вы можете просто щелкнуть по нему правой кнопкой мыши в проводнике Windows в месте его установки, например в моем случае:
Защищенное TLS-соединение с использованием Boost.Asio и OpenSSL под Windows
Введение
Однажды мне потребовалось создать защищенный канал связи между своим сервером и своим приложением. Я помнил, что в документации к Boost Asio упоминалось, что он может работать с защищенными соединениями, используя OpenSSL. Я начал искать информацию по этой теме, но, увы, мало что нашел, тем более под Windows. Так что теперь, разобравшись с этим вопросом, я решил написать эту инструкцию, чтобы другим людям было проще разобраться.
Задача — нужно собрать под Windows сервер и клиент, используя Boost Asio и OpenSSL, чтобы клиент и сервер обменивались информацией по защищенному TLS-каналу. Для пример, я решил взять вот этот клиент и сервер с официального сайта Boost.
Для того чтобы решить эту задачу, нам нужно собрать OpenSSL, подготовить ключи и сертификаты, и собрать оба примера с использованием Boost Asio, OpenSSL.
Установка OpenSSL под Windows
Я взял OpenSSL из официального репозитория: github.com/openssl/openssl
Для сборки OpenSSL я использовал MS Visual Studio 2013, и я собирал статическую библиотеку.
Последовательность сборки следующая:
Сначала нужно сконфигурировать OpenSSL с помощью скрипта на Perl, под Win32. Ниже по тексту я буду считать, что OpenSSL у вас находится в C:\Work\OpenSSL. Вам следует зайти в этот каталог и вызвать скрипт конфигурации:
На этом нужно закрыть обычную командную строку, и запустить командную строку MS Visual Studio, в которой определены дополнительные пути к файлам и дополнительные переменные окружения. Вы можете найти командную строку MS Visual Studio в каталоге C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts.
Из командной строки MS Visual Studio нужно перейти в каталог C:\Work\OpenSSL и запустить сборку с помощью nmake:
Это команда для сборки статической библиотеки, если вы хотите собрать динамическую библиотеку, то нужно запускать ntdll.mak.
После того, как сборка завершилась, нужно скопировать библиотеки и исходные файлы в новый каталог:
На этом сборка OpenSSL под Windows завершена.
Сборка клиента и сервера
Как я и сказал раньше, для примера я решил взять вот эти клиент и сервер из документации по Boost Asio. Однако при попытке сборки я столкнулся с некоторыми проблемами, и в результате мне пришлось модифицировать исходники.
Хотя это место и объявлено как extern «C», и с точки зрения С тут нет никаких ошибок, но Visual Studio не дает нам никакой возможности отключить эту ошибку. Мне пришлось вносить изменения и преобразовывать тип явно:
Исходный код сервера:
Исходный код клиента:
Создание ключей и сертификатов
На этом этапе клиент и сервер запускаются, теперь необходимо проверить их работу. Для этого нужно создать корневой сертификат и подписать им сертификат для сервера.
После сборки в каталоге C:\Work\OpenSSL\output\bin будет лежать openssl.exe, нужно воспользоваться им, чтобы сгенерировать ключи и сертификаты.
Для начала создаем приватный ключ для корневого сертификата:
Потом на основе этого ключа создаем корневой сертификат, действующий 20000 дней:
В интерактивном меню вас попросят ввести двухбуквенный код страны, провинцию, город, организацию, подразделение, Common Name и e-mail адрес. Нужно заполнить все поля на свое усмотрение.
Теперь нужно создать другой сертификат, подписанный корневым сертификатом.
Создаем еще один ключ:
Создаем запрос на подпись:
В интерактивном меню вам потребуется ответить на те же вопросы, что и при создании корневого сертификата. Нужно, чтобы введенный вами Common Name отличался от Common Name у корневого сертификата, это важно!
Теперь подписываем этот запрос корневым сертификатом:
На всякий случай можно проверить, что подписано все правильно:
Первая команда должна вернуть OK, потому что корневой сертификат — самоподписанный.
Вторая команда должна вернуть ОК, потому что user.crt подписан корневым сертификатом.
Последняя команда должна вернуть ошибку, потому что user.crt не является самоподписанным. Если последняя команда возвращает OK, значит что-то пошло не так. В моем случае для исправления нужно было всего лишь сделать Common Name у обоих сертификатов различающимся.
И напоследок, нам еще понадобится DH-параметры, которые нужны для Протокола Диффи — Хеллмана, нужно их сгенерировать. Генерация займет некоторое время:
На этом все, теперь достаточно прописать клиенту и серверу пути к этим файлам, и вы сможете установить между ними защищенное соединение.
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Руководство по OpenSSL: SSL-сертификаты, ключи и CSR
В этом руководстве разберемся как с теорией, так и узнаем как работать с сертификатами на практике при помощи утилиты OpenSSL.

Про Linux за 5 минут
Что такое сертификат SSL? Как работает SSL?
Как правило, сертификаты SSL используются на веб-страницах, которые передают и получают конфиденциальные данные конечного пользователя, такие как номер социального страхования, данные кредитной карты, домашний адрес или пароль. Онлайн формы оплаты являются хорошим примером и обычно шифруют вышеупомянутую деликатную информацию с использованием 128 или 256-битной технологии SSL.
Сертификаты SSL обеспечивают идентификацию удаленного компьютера, чаще всего сервера, но также подтверждают идентификацию вашего компьютера с удаленным компьютером для установления безопасного соединения. Обеспечение безопасности в Интернете всегда было улицей с двусторонним движением, и благодаря SSL-шифрованию сервер «пожимает руку» вашему персональному компьютеру, и обе стороны знают, с кем они общаются.
В чем разница между TLS и SSL?
Как я могу узнать, защищена ли веб-страница с помощью SSL?

Зачем мне нужен SSL-сертификат?
Давайте возьмем реальный пример. Допустим являетесь владельцем сайта интернет-магазина, м вы хотите, чтобы ваши посетители чувствовали себя в безопасности при посещении вашего интернет-магазина и, прежде всего, не стеснялись войти в систему и совершить покупку. Сертификат SSL и соединение HTTPS внушают доверие потребителей. Индустрия электронной коммерции тесно связана с доверием потребителей, и мы можем даже сказать, что ваш бизнес зависит от того, насколько ваши клиенты чувствуют себя в безопасности в течение всего процесса покупки.
Помимо очевидных причин безопасности, SSL-сертификат увеличивает SEO вашего сайта и рейтинг в Google, а также повышает доверие клиентов и, следовательно, повышает общий коэффициент конверсии. Если этого недостаточно, чтобы заставить вас задуматься о получении сертификата SSL для вашего домена, Google обязательно убедит вас. А именно, с июля 2018 года Google помечает каждый сайт без SSL как небезопасный.
Где получить сертификат SSL?
Нередко популярные браузеры не доверяют всем сертификатам, выпущенным одним центром сертификации. Например, Google Chrome не доверяет корневым сертификатам Symantec, поскольку Symantec несколько раз нарушала отраслевые политики. Это означает, что все сертификаты, укоренившиеся в Symantec, стали недействительными независимо от даты их действия.
Типы SSL-сертификатов
Убедитесь, что вы выбрали центр сертификации, который поддерживает необходимый вам тип сертификата. Для вашего удобства ниже приведено описание каждого типа сертификата:
Уровни проверки SSL-сертификатов
Центры сертификации имеют различные уровни проверки сертификатов в ответ на растущий спрос на сертификаты. Некоторые организации используют SSL только для шифрования, в то время как другие хотят показать своим клиентам, что они являются доверенной компанией. Различные потребности привели к различным уровням проверки сертификата.
Этот тип сертификата SSL идеально подходит для защиты блогов, приложений социальных сетей и личных веб-сайтов. Центр сертификации не гарантирует идентичность организации, и проверяется только владение доменом.
Центр сертификации проверяет право собственности на домен и проводит тщательное расследование организации, связанной с сертификатом EV. При рассмотрении расширенного запроса проверки соблюдаются строгие правила, и центр сертификации должен проверить следующее:
Как создать сертификат SSL
То, как сгенерировать запрос на подпись сертификата (CSR), зависит исключительно от платформы, которую вы используете, и конкретного выбранного вами инструмента.
Мы будем генерировать CSR с использованием OpenSSL.
Установка OpenSSL в Debian и Ubuntu
Сначала проверим, установлена ли у нас утилита OpenSSL при помощи команды:
Если пакет OpenSSL установлен, мы получим следующий результат:
Если вы не видите такого результата, выполните следующую команду для установки OpenSSL:
Установка OpenSSL в Red Hat и CentOS
Red Hat (версия 7.0 и более поздние) должна поставляться с предустановленной ограниченной версией OpenSSL. Он предлагает только ограниченную поддержку для IDEA, RC5 и MDC2, поэтому вы можете установить недостающие функции.
Чтобы проверить, установлен ли OpenSSL на сервере yum (например, Red Hat или CentOS), выполните следующую команду:
Эта команда должна вернуть следующий результат:
Если ваш формат вывода отличается, это означает, что OpenSSL не установлен на вашем сервере. Выполните следующую команду для установки OpenSSL:
Что такое запрос на подпись сертификата (CSR)?
Обычно вы генерируете пару CSR и ключ локально на сервере, где будет установлен сертификат SSL. Однако это не строгое правило. Вы можете сгенерировать пару CSR и ключ на одном сервере и установить сертификат на другом. Однако это усложняет ситуацию. Мы рассмотрим и этот сценарий.
SSL использует две длинные строки случайно сгенерированных чисел, которые известны как закрытые и открытые ключи. Открытый ключ доступен для публичного домена, так как он является частью вашего SSL-сертификата и сообщается вашему серверу.
Закрытый ключ должен соответствовать CSR, с которым он был создан, и, в конечном счете, он должен соответствовать сертификату, созданному из CSR. Если закрытый ключ отсутствует, это может означать, что сертификат SSL не установлен на том же сервере, который сгенерировал запрос на подпись сертификата.
CSR обычно содержит следующую информацию:
Обратите внимание, что существуют определенные соглашения об именах, которые необходимо учитывать. Название организации и название организационной единицы не должны содержать следующие символы:
Как создать CSR
Целостность сертификата зависит от того, что только вы знаете закрытый ключ. Если вы когда-либо скомпрометированы или утеряны, как можно скорее введите новый сертификат с новым закрытым ключом. Большинство ЦС не взимают плату за эту услугу.
Большинство пар ключей состоят из 2048 битов. Хотя пары ключей длиной 4096 бит более безопасны, они замедляют SSL-рукопожатия и создают нагрузку на серверные процессоры. Из-за этого большинство сайтов по-прежнему используют 2048-битные пары ключей.
Вариант 1: создать CSR
Чтобы создать открытый и закрытый ключ с запросом на подпись сертификата (CSR), выполните следующую команду OpenSSL:
Что эта команда означает:
Далее ваша система должна запустить текстовую анкету для заполнения, которую мы описывали в таблице выше:
Тут будет список всех сертификатов, останется только найти тот, что мы только что сгенерировали.

После того, как вы сгенерировали CSR с парой ключей, сложно увидеть, какую информацию она содержит, поскольку она не будет в удобочитаемом формате. Вы можете легко декодировать CSR на своем сервере, используя следующую команду OpenSSL:
Далее можно декодировать CSR и убедиться, что он содержит правильную информацию о вашей организации, прежде чем он будет отправлен в центр сертификации. В Интернете существует множество CSR-декодеров, которые могут помочь вам сделать то же самое, просто скопировав содержимое файла CSR, например sslshopper.
Вариант 2. Создание CSR для существующего закрытого ключа
Рекомендуется выдавать новый закрытый ключ всякий раз, когда вы генерируете CSR. Если по какой-либо причине вам необходимо сгенерировать запрос на подпись сертификата для существующего закрытого ключа, используйте следующую команду OpenSSL:
Вариант 3. Создание CSR для существующего сертификата и закрытого ключа
Вариант 4: Генерация самоподписанного(self-signed) сертификата
Самозаверяющий сертификат обычно используется для сред тестирования и разработки, а также в интрасети. Давайте создадим самозаверяющий сертификат, используя следующую команду OpenSSL:
Центры сертификации не проверяют самоподписанные сертификаты. Таким образом, они не так безопасны, как проверенные сертификаты. Если ЦС не подписал сертификат, каждый основной браузер отобразит сообщение об ошибке «Ненадежный сертификат», как показано на рисунке ниже.

Вариант 5: Генерация самоподписанного сертификата из существующего закрытого ключа и CSR
Если у вас уже есть CSR и закрытый ключ и вам нужно создать самозаверяющий сертификат, используйте следующую команду:
Как скопировать содержимое файла CSR
Откройте каталог, в котором находится ваш CSR-файл. Введите следующую команду:
Также рекомендуется обновить SSL-сертификат до истечения срока его действия. В противном случае потребуется покупать новый сертификат.
Как проверить свой CSR, SSL-сертификат и ключ
Как мы уже упоминали, было бы разумно проверить информацию, представленную в CSR, прежде чем подавать заявку на сертификат. Используйте следующие команды для проверки вашего запроса на подпись сертификата, SSL-сертификата и ключа:
Эта команда проверит CSR и отобразит данные, указанные в запросе:
Следующая команда проверит ключ и его действительность:
SSL сертификат
Когда вам нужно проверить сертификат, дату его истечения и кто его подписал, используйте следующую команду OpenSSL:
Закрытый ключ
Закрытый ключ кодируется и создается в формате PEM на основе Base-64, который не читается человеком. Вы можете открыть его в любом текстовом редакторе, но все, что вы увидите, это несколько десятков строк, которые кажутся случайными символами, заключенными в открывающие и закрывающие заголовки. Ниже приведен пример закрытого ключа:
В большинстве случаев вам не нужно импортировать код закрытого ключа в файловую систему сервера, так как он будет создан в фоновом режиме, пока вы создаете CSR, а затем автоматически сохраняется на сервере. Во время установки SSL-сертификата система извлекает ключ.
Проверьте, совпадают ли сертификат и закрытый ключ
Для проверки вам нужно вывести контрольные суммы md5 и сравнить их. Выполните следующую команду:
Устранение проблем с SSL
Система не извлекает закрытый ключ автоматически
Некоторые системы не автоматизируют процедуру извлечения закрытого ключа. Кроме того, если вам нужно установить существующий сертификат на другом сервере, вы, очевидно, не можете ожидать, что он получит закрытый ключ. Основная сложность здесь заключается в том, как найти точное местоположение ключа. Способ получения ключа зависит от используемой ОС сервера и от того, использовался ли интерфейс командной строки или панель управления веб-хостинга определенного типа для генерации CSR.
Как найти свой ранее установленный закрытый ключ?
Если дело в том, что ваш сертификат уже установлен, выполните следующие действия, которые помогут вам найти свой закрытый ключ в популярных операционных системах.
Nginx
Вы сможете найти местоположение личного ключа вашего сервера в файле виртуального хоста вашего домена.
Apache
Выходные данные будут отображать каталог, который содержит закрытый ключ. Смотрите пример выходных данных ниже:
Windows (IIS)
На серверах, работающих под управлением Windows Internet Information Services, операционная система сохраняет закрытый ключ в скрытой папке, так же как любая обычная ОС Windows хранит важные системные данные.
Теперь у вас есть то, что вам нужно, если вы хотите сохранить резервную копию или установить сертификат на другом сервере Windows.
Как переместить SSL-сертификат с сервера Windows на сервер, отличный от Windows?
Команды OpenSSL для конвертации CSR
Файлы FKCS12 используются для экспорта или импорта сертификатов в Windows IIS.
Конвертировать PKCS12 в PEM CSR
Конвертировать PEM в DER
Конвертировать DER в PEM
Зашифровать незашифрованный закрытый ключ
Следующая команда OpenSSL возьмет незашифрованный закрытый ключ и зашифрует его с помощью определенной вами парольной фразы.
Определите ключевую фразу для шифрования закрытого ключа.
Расшифровать зашифрованный закрытый ключ
Следующая команда OpenSSL возьмет зашифрованный закрытый ключ и расшифрует его.
При появлении запроса введите кодовую фразу для расшифровки закрытого ключа.
Проверить версию OpenSSL
Эта команда отображает версию OpenSSL, и ее параметры, с которыми она была скомпилирована:
Получим примерно такой вывод:
Заключение
Теперь вы знаете, как сгенерировать запрос на подпись сертификата с помощью OpenSSL, а также устранить наиболее распространенные ошибки.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Полезно?
Почему?
😪 Мы тщательно прорабатываем каждый фидбек и отвечаем по итогам анализа. Напишите, пожалуйста, как мы сможем улучшить эту статью.
😍 Полезные IT – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.
Установите OpenSSL в Windows с помощью Cygwin
Установите Cygwin и OpenSSL
Cygwin предлагает простой способ установить большую коллекцию бесплатного программного обеспечения с открытым исходным кодом (включая OpenSSL) в Windows. Чтобы установить Cygwin с OpenSSL:
Войти https://cygwin.com/install.html и загрузите соответствующий установщик для вашей ОС (32- или 64-разрядный).
Убедитесь, что Установить из интернета затем нажмите Следующая> кнопку.
Оставлять Корневая директория и Установить для с настройками по умолчанию (если вы не знаете, что у вас есть причины их изменить), затем нажмите Следующая> кнопку.
Выберите локальный каталог пакета, затем щелкните значок Следующая> кнопка. (Опять же, по умолчанию, вероятно, хорошо.)
Выберите подходящий параметр для подключения к Интернету, затем щелкните значок Следующая> кнопку.
Выберите сайт загрузки из списка, затем нажмите Следующая> кнопку.
Установщик загрузит приложение установки и запустит его.
Введите «openssl» в Поиск поле, затем перейдите к Все> База в Упаковка колонка.
Найдите линию с OpenSSLзатем выберите самую последнюю версию в раскрывающемся меню справа от НОВИНКИ колонка.
На этом этапе вы можете продолжить поиск и выбор пакетов, которые хотите установить, или просто продолжить установку (вы всегда можете повторно запустить приложение, чтобы установить или удалить отдельные пакеты). Когда будете готовы, щелкните Следующая> кнопку.
Нажмите на Следующая> снова.
Cygwin Setup начнет загрузку необходимых файлов для установки. В базовой установке Cygwin много файлов, поэтому для ее завершения может потребоваться некоторое время.
Выберите, хотите ли вы создавать значки на рабочем столе и / или в меню «Пуск», затем нажмите кнопку Завершить кнопку.
Убедитесь, что вы установили OpenSSL, открыв приложение терминала Cygwin и набрав openssl version в командной строке. Все готово!















