Все статьи о SSL SSL и сертификаты

Самоподписанные vs CA-подписанные SSL-сертификаты

Самоподписанный сертификат — это тот, который вы создаёте сами — вы выступаете в роли собственного удостоверяющего центра. CA-подписанный сертификат выпускается и подписывается доверенным удостоверяющим центром (таким как Let’s Encrypt или DigiCert), которому браузеры уже доверяют.

Практическая разница: самоподписанные сертификаты вызывают предупреждения безопасности в браузере. CA-подписанные — нет.

Сравнение

СамоподписанныйCA-подписанный
СозданВами (команда openssl)Доверенным CA
Доверие браузера❌ Предупреждение: «Не доверен»✅ Значок замка
Стойкость шифрованияОдинаковаяОдинаковая
СтоимостьБесплатноБесплатно (Let’s Encrypt) или платно
ВалидацияНет — вы ручаетесь за себя самиCA проверяет домен/организацию
Сценарий использованияРазработка, внутреннее использование, тестированиеПродакшен-сайты
ОбновлениеРучное (вы задаёте срок действия)90 дней (LE) или 1 год (платные)
Защита от MITM⚠️ Слабая — пользователи привыкают кликать «Продолжить»✅ Сильная — предупреждения только при реальных проблемах

Почему самоподписанные сертификаты показывают предупреждения

Браузеры доверяют сертификатам на основе того, кто их подписал. Ваша ОС и браузер поставляются со списком из ~100-150 доверенных корневых CA. Когда сервер предъявляет сертификат, подписанный одним из этих CA, браузер показывает замок.

Самоподписанный сертификат не подписан ни одним доверенным CA — он подписан собственным закрытым ключом. Браузер не может проверить подлинность сертификата, поэтому показывает предупреждение. Это правильное поведение — без проверки CA кто угодно мог бы создать сертификат, утверждающий принадлежность к google.com.

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

Внутренние сервисы

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

Разработка и тестирование

Быстрый HTTPS для локальной разработки, когда не хочется настраивать mkcert. Предупреждение браузера раздражает, но функционально для тестирования.

IoT и встроенные устройства

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

Изолированные сети

Сети без доступа к интернету, где протокол ACME от Let’s Encrypt не может работать. Самоподписанный сертификат — единственный вариант.

Когда НЕ использовать самоподписанные сертификаты

Любой публичный веб-сайт

Пользователи видят пугающее предупреждение и уходят. Поисковые системы могут не индексировать HTTPS-страницы с недоверенными сертификатами. Нет причин использовать самоподписанные, когда сертификаты Let’s Encrypt бесплатны.

Любой сайт, обрабатывающий данные пользователей

Самоподписанные сертификаты приучают пользователей кликать «Продолжить» через предупреждения безопасности — полная противоположность хорошей безопасности. Когда реальная атака вызовет предупреждение, пользователи, привыкшие нажимать «Продолжить в любом случае», не заметят его.

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

# ECDSA (рекомендуется)
openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
  -keyout key.pem -out cert.pem -days 365 -nodes \
  -subj "/CN=internal.example.com" \
  -addext "subjectAltName=DNS:internal.example.com,IP:10.0.0.5"

# RSA
openssl req -x509 -newkey rsa:2048 \
  -keyout key.pem -out cert.pem -days 365 -nodes \
  -subj "/CN=internal.example.com"

Используйте полученные cert.pem и key.pem в конфигурации сервера. Примечание: fullchain.pem и chain.pem не нужны — у самоподписанных сертификатов нет цепочки.

Лучшие альтернативы для каждого сценария

СценарийВместо самоподписанного используйте
Продакшен-сайтLet’s Encrypt через GetHTTPS — бесплатно, доверенный, 5 минут
Локальная разработкаmkcert — локально доверенный, без предупреждений
Внутренние сервисыLet’s Encrypt (если есть доступ в интернет) или частный CA
Тестирование/стейджингStaging-окружение Let’s Encrypt — неограниченные тестовые сертификаты

Самоподписанные сертификаты имели смысл, когда SSL-сертификаты стоили $100+/год. Теперь, когда Let’s Encrypt бесплатен, редко есть причина самоподписывать что-либо, кроме по-настоящему изолированных сред.

Часто задаваемые вопросы

Самоподписанный сертификат менее безопасен, чем CA-подписанный?

Шифрование идентично — те же алгоритмы, та же стойкость ключей. Разница в доверии: CA-подписанный сертификат подтверждает личность сервера через доверенную третью сторону. Самоподписанный сертификат не доказывает ничего — кто угодно может создать такой для любого домена. Проблема не в криптографии, а в отсутствии аутентификации.

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

Да, на машинах, которые вы контролируете. Импортируйте сертификат (или самоподписанный CA, который его подписал) в хранилище доверия ОС/браузера. Это именно то, что автоматизирует mkcert. Но вы не можете заставить браузеры других людей доверять ему — для этого нужен настоящий CA.

Мой хостинг-провайдер дал мне самоподписанный сертификат. Это нормально?

Нет, для публичного сайта. Попросите провайдера включить бесплатный Let’s Encrypt (большинство хостингов это поддерживают). Если не поддерживают, используйте GetHTTPS, чтобы самостоятельно получить доверенный сертификат.

Почему бы просто не создать собственный CA?

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

Похожие статьи

SSL и сертификаты 2026-05-07
Что такое удостоверяющий центр (CA)?
Удостоверяющий центр подписывает SSL-сертификаты для подтверждения подлинности сайта. Узнайте, как работают CA, модель доверия, основные CA и почему Let's Encrypt изменил отрасль.
Развёртывание 2026-05-08
HTTPS для Localhost: SSL-сертификаты для локальной разработки
Настройте доверенный HTTPS на localhost с помощью mkcert — без предупреждений браузера. Описывает настройку mkcert, самоподписанные сертификаты и почему Let's Encrypt не может выдать сертификат для localhost.
Начало работы 2026-05-08
Как получить бесплатный SSL-сертификат (пошаговое руководство)
Получите бесплатный SSL-сертификат от Let's Encrypt за 5 минут --- без установки программ, без создания аккаунта. Полное руководство: 4 метода, оба типа проверки, установка на 6 платформах и устранение неполадок.
Получите бесплатный SSL-сертификат в браузере
Без установки, без аккаунта. Ваш приватный ключ никогда не покидает устройство.
Получить сертификат