Сайт в разработке Наполняем разделы и правим ошибки — что-то может выглядеть или работать не так. Если заметили — позвоните или напишите.

Как создать самоподписанный сертификат ssl

Как создать самоподписанный сертификат ssl — практическая инструкция с командами, проверкой результата и типичными ошибками для локальной разработки и тестов.

Раздел: SSL и безопасность

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

Что понадобится перед началом

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

Перед тем как приступить, проверьте:

  • Установлен ли OpenSSL;
  • Есть ли доступ к терминалу;
  • Какое имя будет использоваться для сайта: домен, localhost или IP;
  • Нужен ли один файл для сертификата и ключа или отдельные файлы.

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

Команда для генерации

Самый простой вариант — создать ключ и сертификат одной командой. Именно так обычно и решают задачу, когда нужно понять, как создать самоподписанный сертификат ssl для тестов:

openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 365

Что означают параметры:

  • -x509 — создать сертификат сразу в формате X.509;
  • -newkey rsa:2048 — сгенерировать новый RSA-ключ длиной 2048 бит;
  • -nodes — не шифровать ключ паролем, чтобы сервер мог запускаться без ввода фразы;
  • -keyout — имя файла с закрытым ключом;
  • -out — имя файла сертификата;
  • -days 365 — срок действия в днях.

Во время выполнения OpenSSL попросит ввести данные субъекта. Для локальной разработки можно заполнить их минимально, но поле Common Name лучше указать так, как вы будете открывать сайт в браузере: например, localhost или имя тестового домена. Если адрес не совпадёт, браузер может показать ошибку даже при корректном сертификате.

Как добавить альтернативные имена

Во многих случаях одной строки Common Name недостаточно. Современные браузеры ориентируются на SAN — Subject Alternative Name. Поэтому, если сертификат нужен для нескольких адресов, стоит сразу добавить их в расширение SAN. Это особенно важно, когда вы исследуете, как создать самоподписанный сертификат ssl для локального домена и IP одновременно.

Пример через конфигурационный файл:

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no

[req_distinguished_name]
CN = localhost

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
DNS.2 = mysite.local
IP.1 = 127.0.0.1

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

Проверка результата и подключение

После генерации убедитесь, что файлы созданы и читаются:

  • Сертификат должен открываться командой просмотра сведений;
  • Внутри должны быть корректные поля Subject и срок действия;
  • В SAN должны быть нужные домены или IP.

Проверить сертификат можно так:

openssl x509 -in server.crt -text -noout

Если видите нужное имя и даты, файл создан правильно. Затем подключите его к веб-серверу. Для Nginx обычно указывают путь к сертификату и ключу в директивах ssl_certificate и ssl_certificate_key. Для Apache используются похожие параметры в конфигурации виртуального хоста.

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

Типичные ошибки

Чаще всего проблемы возникают из-за таких причин:

  • Ключ и сертификат перепутаны местами в настройках сервера;
  • Сертификат создан без SAN;
  • В Common Name указан один адрес, а открывают другой;
  • Файлы лежат в месте, недоступном для процесса веб-сервера;
  • Права на ключ слишком широкие.

Если браузер всё равно ругается, проверьте имя хоста, дату окончания действия, цепочку доверия и то, действительно ли сервер читает именно тот файл, который вы создали. Иногда помогает полный перезапуск процесса, а не только reload.

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

Другие ответы

SSL и безопасность

Как создать ssl сертификат windows

Практический разбор запроса «как создать ssl сертификат windows»: что можно сделать в Windows, какие есть варианты, как проверить результат и избежать типичных ошибок.

PHP

PHP какой тип

Коротко и по делу: разберём запрос php какой тип, покажем, где в PHP есть типы данных, как их проверять и почему вопрос бывает неоднозначным.

CSS

Как задать css в html

Практическое объяснение, как задать css в html: способы подключения, приоритеты, частые ошибки и проверка результата для страницы без лишней теории.

Заявка

Расскажите о проекте

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

Форма обратной связи

Отвечаем в рабочие дни с 10:00 до 19:00

Написать в Telegram