Гид по технологиям

Самоподписанный SSL/TLS-сертификат с OpenSSL на Windows

8 min read Безопасность Обновлено 02 Jan 2026
Самоподписанный SSL с OpenSSL на Windows
Самоподписанный SSL с OpenSSL на Windows

Навесной замок на клавиатуре компьютера

Коротко: с помощью OpenSSL можно быстро сгенерировать приватный ключ, создать запрос на сертификат (CSR) и выписать самоподписанный сертификат для тестирования или внутреннего использования. Для публичных сервисов предпочтительнее сертификат от доверенного центра сертификации (CA). В статье — пошаговые команды для Windows, контрольные проверки, чек‑листы ролей и рекомендации по безопасности и совместимости.

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

Зачем этот материал

Цель: показать рабочий процесс создания самоподписанного сертификата с OpenSSL на Windows, объяснить риски, предложить альтернативы и дать практические инструкции для DevOps и инженеров безопасности.

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

Короткие определения

  • OpenSSL — криптографическая библиотека и набор инструментов для работы с ключами и сертификатами.
  • Приватный ключ — секретный файл, который должен храниться безопасно.
  • CSR (Certificate Signing Request) — запрос, содержащий информацию о субъекте и публичный ключ.
  • CA (Certification Authority) — центр сертификации, ставящий доверительную подпись на сертификате.

Установка OpenSSL на Windows

Если OpenSSL ещё не установлен, скачайте готовый MSI-пакет для вашей архитектуры (Win64/Win32) с доверенного источника. Для упрощения пример использует сборку, доступную на slproweb (готовые бинарники). При установке обратите внимание на путь установки — в примерах использован D:\OpenSSL-Win64.

Скриншот страницы slproweb с загрузкой OpenSSL

  1. Скачайте MSI и выполните установку от имени администратора.
  2. Запомните путь установки. В примерах: D:\OpenSSL-Win64\bin.
  3. Откройте PowerShell от имени администратора и перейдите в папку bin:
cd 'D:\OpenSSL-Win64\bin'
  1. Проверьте доступность openssl.exe:
.\openssl.exe version

Запуск команды проверки версии OpenSSL

Примечание: альтернативы для автоматизированного получения сертификатов — клиенты ACME (например, Certbot) и интеграции с Let’s Encrypt для публичных доменов.

Генерация приватного ключа

Приватный ключ необходим прежде всего. Пример создания RSA 2048 со шифрованием паролем:

openssl.exe genrsa -des3 -out myPrivateKey.key 2048

Команда создаст 2048-битный RSA-ключ, зашифрованный 3DES. OpenSSL запросит пароль — используйте сильный, но запоминающийся пароль. После подтверждения пароля в каталоге появится myPrivateKey.key.

Если нужен несекретный ключ (без passphrase) — удобно для автоматического перезапуска сервисов (риск: ключ хранится в открытом виде):

openssl.exe genrsa -out myPrivateKey-nopass.key 2048

Важно: храните приватный ключ в защищённом месте и ограничивайте доступ (права NTFS, ключевое хранилище, HSM для продакшена).

Создание CSR (запроса на сертификат)

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

openssl.exe req -new -key myPrivateKey.key -out myCertRequest.csr

OpenSSL запросит пароль (если ключ зашифрован) и затем предложит заполнить поля:

  • Country Name (2 буквы) — код страны.
  • State or Province Name — регион.
  • Locality Name — город.
  • Organization Name — организация.
  • Organizational Unit Name — подразделение.
  • Common Name — основной домен (важно: укажите точный CN и/или формируйте SAN).
  • Email Address.

Совет: для современных сертификатов используйте Subject Alternative Names (SAN) вместо полагания только на Common Name. Для добавления SAN создайте конфигурационный файл openssl.cnf и используйте флаг -config.

Альтернативная команда для одновременного создания ключа и CSR (без пароля):

openssl.exe req -new -newkey rsa:2048 -nodes -keyout myPrivateKey2.key -out myCertRequest2.csr

Вывод команды генерации CSR

CSR включает:

  • Запрос от организации.
  • Common Name (домен).
  • Публичный ключ.

Если CSR направляется в CA, отправьте файл CA и следуйте их процедурам верификации.

Создание самоподписанного сертификата (PEM/CER)

На практике CA подписывает CSR и возвращает PEM/CRT. Для самоподписанного сертификата вы можете подписать свой CSR собственной приватной подписью (не доверяется внешними браузерами):

openssl x509 -req -sha256 -days 365 -in myCertRequest.csr -signkey myPrivateKey.key -out mySelfSignedCert.pem

Объяснение параметров:

  • -req — входной файл CSR.
  • -sha256 — хеш-функция для подписи.
  • -days 365 — срок действия сертификата (в днях).
  • -signkey myPrivateKey.key — используемый приватный ключ.
  • -out — файл результата (PEM).

Если вам нужен формат .cer (DER) для некоторых Windows-приложений, можно конвертировать:

openssl x509 -in mySelfSignedCert.pem -outform der -out mySelfSignedCert.cer

Если нужно создать .pfx (PKCS#12) с приватным ключом и цепочкой (удобно для IIS и Windows хранилища сертификатов):

openssl pkcs12 -export -out myCertBundle.pfx -inkey myPrivateKey.key -in mySelfSignedCert.pem

Пример файла самоподписанного сертификата в папке

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

Пользуйтесь командой для чтения содержимого сертификата:

openssl.exe x509 -noout -text -in mySelfSignedCert.pem

Вы увидите поля субъекта, издателя (для самоподписанного — совпадают), публичный ключ, алгоритмы, сроки действия и расширения (например, SAN).

Когда самоподписанный сертификат не подходит

  • Браузеры и клиенты не доверяют самоподписанным сертификатам по умолчанию — появится предупреждение о недоверенном соединении.
  • Для публичных сайтов, интернет-магазинов, API доступных внешним клиентам — нужен сертификат от доверенного CA.
  • Для сценариев с регуляторными требованиями (банковское ПО, медицинские данные) самоподписанный сертификат часто не удовлетворяет требованиям.

Важно: злоумышленник может подделать сайт с самоподписанным сертификатом; доверие должно быть установленo централизованно (CA или внутренний PKI с доверенными корнями).

Альтернативные подходы и когда их выбирать

  • Let’s Encrypt (ACME) — бесплатные валидные сертификаты для публичных доменов, автоматизация обновлений.
  • Внутренний корпоративный PKI — для массового выпуска сертификатов внутри организации с центром доверия.
  • HSM/Key Vault (Azure Key Vault, AWS KMS) — для хранения приватных ключей и подпиcи в продакшене.
  • Сертификаты от коммерческих CA — когда нужен OV/EV и юридическое подтверждение.

Практическое руководство (SOP) — быстрый чек‑лист для DevOps

  1. Подготовка окружения
    • Установить OpenSSL и проверить версию.
    • Создать защищённую директорию для ключей (ограничить права).
  2. Генерация ключа
    • Решить: с паролем или без.
    • Записать команду и сохранить ключ в защищённом хранилище.
  3. Создание CSR
    • Использовать правильный Common Name и SAN.
    • Проверить поля в CSR командой openssl req -text -noout -in .
  4. Подпись (самоподпись)
    • Генерировать сертификат с указанием срока и алгоритма.
  5. Тестирование
    • Проверить содержимое сертификата.
    • Подключить сертификат к тестовой службе.
    • Проверить через браузер и curl (curl -v –cacert https://host).
  6. Документация
    • Задокументировать срок действия и процедуру продления.

Критерии приёмки

  • Сертификат успешно загружается в тестовый сервис.
  • При обращении с доверенным CA/корневым сертификатом ошибок не возникает.
  • Проверка openssl x509 показывает ожидаемые SAN и сроки действия.

Роль‑ориентированные чек‑листы

  • DevOps
    • Убедиться, что автоматизация деплоя сертификата настроена.
    • Настроить мониторинг сроков действия и оповещения.
  • Инженер безопасности
    • Проверить хранение приватных ключей.
    • Оценить необходимость использования HSM.
  • Тестировщик
    • Проверить соединение в разных браузерах и клиентах.
    • Проверить поведение при истечении срока действия.

Усиление безопасности (hardening)

  • Используйте как минимум RSA 2048 или предпочтительно RSA 4096; для эллиптических кривых используйте ECDSA (например, prime256v1).
  • Используйте SHA-256 или более сильные алгоритмы для подписи.
  • Для продакшена храните ключи в HSM или менеджерах секретов.
  • Ограничьте доступ к файлам ключей (минимальные права).
  • Настройте автоматическое обновление/ротацию сертификатов.

Совместимость и распространённые проблемы

  • Браузеры не доверяют самоподписанным сертификатам — для тестов импортируйте корневой сертификат в доверенные хранилища тестовых машин.
  • Мобильные приложения и некоторые SDK игнорируют пользовательские корни — проверьте каждый клиент.
  • Форматы: PEM (текстовый), DER (бинарный), PFX/PKCS#12 (ключ+сертификат) — используйте нужный для целевой платформы.

Технические сценарии и примеры команд

  • Удаление пароля с приватного ключа (снижает безопасность):
openssl rsa -in myPrivateKey.key -out myPrivateKey_unencrypted.key
  • Конвертация PEM в PFX для IIS:
openssl pkcs12 -export -out myCertBundle.pfx -inkey myPrivateKey.key -in mySelfSignedCert.pem
  • Просмотр CSR для проверки SAN/полей:
openssl req -text -noout -in myCertRequest.csr
  • Проверка цепочки сертификатов (если есть промежуточные):
openssl verify -CAfile ca-bundle.pem mySelfSignedCert.pem

Проверка в браузере и через curl

  • Для curl с самоподписанным сертификатом:
curl -v --cacert mySelfSignedCert.pem https://your.test.host
  • Для временной проверки можно запустить локальный сервер (например, nginx или IIS) с новым сертификатом и открыть страницу в браузере. Если браузер предупреждает о недоверии — импортируйте сертификат в доверенное хранилище тестовой машины.

Политика использования и риски

  • Самоподписанный сертификат уместен только внутри контролируемой среды.
  • Не используйте самоподписанные сертификаты для публичных сайтов или производства, где требуется юридическая и техническая верификация.
  • Регулярно проверяйте срок действия и реализуйте оповещения за 30/15/7 дней до истечения.

Соответствие GDPR и защита персональных данных

Сертификат сам по себе не нарушает GDPR, но защищает канал передачи данных. Однако для соответствия требованиям безопасности и аудита храните и обрабатывайте ключи с документированной процедурой контроля доступа и журналированием действий.

Частые вопросы

Чем самоподписанный сертификат отличается от сертификата CA?

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

Можно ли использовать самоподписанный сертификат в продакшене?

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

Как добавить SAN в сертификат?

Создайте конфигурационный файл openssl.cnf с разделом subjectAltName и укажите его при создании CSR или сертификата с флагом -config.

Рекомендации по миграции на доверенные сертификаты

  1. Для публичных доменов переключитесь на Let’s Encrypt или коммерческого CA.
  2. Настройте автоматическое получение и продление сертификатов (ACME клиента).
  3. Храните приватные ключи в защищённом хранилище и ограничьте доступ.

Ментальные модели и эвристики

  • Защита канала ≠ подтверждение идентичности сервера. Шифрование скрывает трафик, но доверие устанавливается подписью CA.
  • Самоподпись — временное решение для изолированных сред; CA — долгосрочное и масштабируемое.
  • Рассматривайте приватный PKI как мост между самоподписью и публичным CA: вы получаете контроль и масштабируемость внутри организации.

Решение проблем и откат (rollback)

  • Если новый сертификат вызывает ошибки, верните предыдущую версию сертификата и проверьте логи приложений и клиента.
  • Для IIS импортируйте старый PFX и перезапустите службу.
  • Для nginx откатьте конфигурацию и перезапустите nginx:
systemctl restart nginx

(или соответствующая команда Windows сервису).

Итог и рекомендации

  • Используйте самоподписанный сертификат для локального тестирования и контролируемых окружений.
  • Для публичных сервисов используйте доверенный CA (Let’s Encrypt для большинства случаев).
  • Храните приватные ключи безопасно, планируйте ротацию и автоматизацию продления.

Ключевые выводы:

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

Краткое резюме:

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Исправить iPhone Unavailable — 4 проверенных способа
Мобильные устройства

Исправить iPhone Unavailable — 4 проверенных способа

Разблокировать отключённый iPhone — 4 метода
Mobile

Разблокировать отключённый iPhone — 4 метода

Безпарольный вход в Microsoft — как настроить
Безопасность

Безпарольный вход в Microsoft — как настроить

Группы общих паролей на iPhone (iOS 17)
Руководство

Группы общих паролей на iPhone (iOS 17)

Решение проблем с менеджером паролей — практический гид
Безопасность

Решение проблем с менеджером паролей — практический гид

Настройка двухфакторной аутентификации в соцсетях
Безопасность

Настройка двухфакторной аутентификации в соцсетях