Генерация SSL-сертификатов может быть трудной задачей, полной фрустрации и горести. Но это необязательно так! Если у вас есть Windows 10, OpenSSL и немного помощи из этого учебника, вы будете на правильном пути.
В этой статье вы узнаете, как установить OpenSSL на Windows 10. После установки вы сможете генерировать SSL-сертификаты, устранять неполадки и отлаживать сертификаты, а также конвертировать их между форматами.
Давайте начнем освоение OpenSSL на Windows 10 с помощью PowerShell!
Связано: Управление сертификатами с помощью диспетчера сертификатов Windows и PowerShell
Предварительные требования
В этой статье вы узнаете, используя практический подход. В то время как OpenSSL исторически предназначен для Linux, его можно использовать и с Windows.
- A Windows system with Local Administrator rights – The tutorial will be using Windows 10
- Windows PowerShell 5.1 (поставляется с Windows) или PowerShell 7
- Chocolatey – Менеджер пакетов для Windows, установленный.
- PowerShell ISE, Visual Studio Code или любой текстовый редактор на ваш выбор
Все снимки экрана в этом руководстве сделаны на Windows 10 сборка 1909 и PowerShell 7.
Установка OpenSSL на Windows 10 с помощью PowerShell и Chocolatey
предполагая, что вы установили Chocolatey, используя инструкции по установке, вашей первой задачей будет установка OpenSSL на Windows 10. Для этого откройте консоль PowerShell и выполните команду choco install OpenSSL.Light
, как показано ниже.

Вот и все! Теперь у вас установлен OpenSSL с помощью PowerShell.
Настройте рабочий каталог
В этом руководстве будут созданы несколько сертификатов для обучения. Чтобы убедиться, что все ваши действия ограничены одним каталогом, который вы можете позже очистить, создайте его.
Этот учебник будет хранить все сертификаты и связанные файлы в каталоге C:\certs. Вы можете создать папку с помощью PowerShell, выполнив следующую команду.
Теперь пришло время настроить OpenSSL.
Настройка OpenSSL
По умолчанию OpenSSL на Windows 10 не поставляется конфигурационным файлом. Это сделано намеренно, потому что существует множество параметров конфигурации, которые вы можете настроить по своему усмотрению. В этом руководстве вы будете использовать образец конфигурации, который вы можете настроить позже, чтобы лучше соответствовать вашим требованиям безопасности.
Откройте PowerShell и выполните следующую команду. Эта команда загружает образец конфигурационного файла с MIT и сохраняет его как openssl.cnf в текущем рабочем каталоге.
Теперь вы можете открыть файл openssl.cnf, и вы должны увидеть что-то вроде того, что показано ниже.

Загруженная конфигурация будет работать в текущем состоянии. Не используйте значения по умолчанию в рабочей среде!
Обновите переменные среды профиля PowerShell
Чтобы все прошло гладко, вам следует изменить ваш профиль PowerShell в Windows 10. Настройка некоторых переменных среды позволяет легко переключаться между разными версиями OpenSSL, которые могут быть установлены у вас.
I suggest adding two environment variables to your PowerShell profile called path
and OPENSSL_CONF
. You will update the PATH
environment variable to ensure you can run the openssl binary in any location while on the command line.
Ниже вы увидите способ создания профиля PowerShell, если у вас его еще нет. Эта команда добавляет путь к исполняемому файлу OpenSSL в вашу переменную PATH
и присваивает путь к файлу конфигурации переменной OPENSSL_CONF
.
Чтобы использовать переменные среды, перезагрузите ваш профиль, набрав . $profile
или просто закройте и снова откройте PowerShell.
Теперь вы можете легко вызывать исполняемый файл openssl откуда угодно в PowerShell, как показано ниже.

Использование OpenSSL в Windows 10 для генерации CSR и закрытого ключа
Перед тем, как создать SSL-сертификат, вам необходимо сгенерировать запрос на подпись сертификата (CSR) . CSR – это закодированный файл, который предоставляет вам способ обмена открытым ключом с удостоверяющим центром (CA). Этот файл содержит идентификационную информацию, алгоритм подписи и цифровую подпись. Давайте создадим ваш первый CSR и закрытый ключ.
Связано: Руководство по сертификатам X509 для смертных
Для создания CSR выполните следующую команду. OpenSSL затем предложит вам ввести некоторую идентификационную информацию, как показано в следующей демонстрации.

После завершения у вас будет действительный CSR и закрытый ключ, которые можно использовать для выдачи вам SSL-сертификата.
Параметры файла конфигурации по умолчанию могут быть дополнительно отредактированы для упрощения этого процесса, если вы не хотите вводить данные каждый раз при создании CSR.
Вы можете узнать больше о доступных параметрах CSR и просмотреть примеры конфигураций в страницах справки. У OpenSSL также есть активный репозиторий на GitHub с примерами.
Генерация пар ключей RSA
Вы также можете создавать пары ключей RSA (открытый/закрытый) с помощью OpenSSL. Для этого сначала создайте закрытый ключ с использованием подкоманды genrsa
, как показано ниже.
При выполнении нижеприведенной команды OpenSSL в Windows 10 создаст RSA-ключ с длиной ключа 2048 бит. Этот ключ генерируется практически мгновенно на современном оборудовании. Полученный ключ выводится в рабочий каталог
Затем сгенерируйте открытый ключ, используя только что созданный закрытый ключ с помощью подкоманды rsa
. Нижеприведенный синтаксис создаст открытый ключ с именем rsa.public в рабочем каталоге из закрытого ключа rsa.private.
Генерация самоподписанного сертификата
Иногда вам может потребоваться сгенерировать самоподписанный сертификат. Самоподписанные сертификаты подходят для использования в лабораторных условиях, но не рекомендуются для использования в рабочей среде.
Давайте создадим самоподписанный сертификат перед переходом к следующей задаче. Для этого выполните команду ниже, чтобы создать X509 SSL-сертификат. Этот сертификат будет использовать криптографию SHA256, будет действителен в течение 365 дней с использованием RSA-ключа длиной 2048 бит. Сертификат будет сохранен в рабочем каталоге.
Теперь вы готовы импортировать сертификат в браузер или сервер.
Проверка CSR, сертификатов и ключей с помощью OpenSSL
Проверка информации в CSR, закрытом ключе, сертификате или PKCS#12 может сэкономить ваше время при устранении ошибок SSL. Иногда может быть использован неправильный ключ для создания сертификата, например. У вас может быть неправильная идентификационная информация в сертификате.
Давайте начнем с проверки CSR с использованием команды req
и нескольких параметров:

Детали, такие как название страны, название организации и адрес электронной почты, указанные при создании CSR в начале этого руководства, должны точно совпадать.
Вы также можете проверить сертификат, используя подкоманду x509
с несколькими параметрами:

Преобразование сертификатов с помощью OpenSSL
Иногда возникают ситуации, когда приложение не использует определенный формат сертификата. Такое может произойти, например, с приложением, называемым HAproxy, которое требует PEM-сертификата, когда у вас может быть сертификат в формате DER (.crt .cer .der).
Чтобы продемонстрировать преобразование сертификата, давайте преобразуем самоподписанный сертификат, созданный ранее в формат DER (certificate.crt), в PEM. Используйте код в следующем фрагменте кода для этого.
Эта команда ниже использует подкоманду x509
с параметром -inform
, который должен соответствовать формату файла -in
, за которым следует формат -out
.
Вы также можете поменять порядок, если хотите преобразовать формат PEM обратно в DER, как показано ниже.
И, наконец, вы можете преобразовать PKCS#12 в PEM и PEM в PKCS#12. Это тип файлов, который содержит закрытые ключи и сертификаты. Для преобразования в формат PEM используйте подкоманду pkcs12
.
Также вы можете преобразовать PEM-сертификат и закрытый ключ в формат PKCS#12, используя -export
с несколькими дополнительными параметрами. Ниже приведен пример экспорта сертификата в формате PKCS#12 с использованием вашего закрытого ключа и SomeCertificate.crt
в качестве исходного файла. Используя значение параметра -certfile
MyCACert.crt
, вы можете проверить сертификат SomeCertificate.crt
.
Устранение неполадок и отладка
Теперь, когда вы можете создавать и преобразовывать CSR, сертификаты и ключи, пришло время научиться их отлаживать и отлаживать. OpenSSL поставляется с командами, которые позволяют легко находить проблемы.
Кроме того, OpenSSL позволяет проверять сертификаты на целостность файла и тестировать на возможные повреждения данных. Используя контрольную сумму MD5, вы можете использовать следующие примеры кода для проверки сертификатов, ключей и CSR:
После получения исходной хеш-суммы вы можете сравнить ее с текущей хеш-суммой, чтобы убедиться, что сертификат не был изменен или поврежден.
Вот пример того, как выглядит этот код при запуске в PowerShell:

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