Self-signed сертификат — это SSL сертификат, созданный и подписанный непосредственно владельцем сервера, без участия центра сертификации. С технической точки зрения он не отличается от обычного сертификата, то есть обеспечивает шифрование и устанавливает соединение по протоколу HTTPS. Однако браузеры не доверяют такому сертификату, поскольку он не подтвержден доверенной третьей стороной. В результате при заходе на сайт пользователь видит большое красное предупреждение об ошибке безопасности. Именно поэтому self-signed сертификаты не должны использоваться в production среде.
Когда полезен self-signed сертификат
Самый первый и распространенный сценарий использования — это процесс разработки. Когда разработчики работают на локальном компьютере или внутреннем тестовом сервере, они используют self-signed сертификат для тестирования HTTPS протокола. Второй сценарий — это сервисы во внутренней корпоративной сети, например внутренний API сервер или внутренняя панель мониторинга. В этом случае сертификат используется только сотрудниками компании, и его можно заранее установить на их компьютеры. Третий сценарий — это IoT устройства и embedded системы, которые не всегда подключены к интернету и работают в изолированной сети.
Процесс создания self-signed сертификата
С помощью утилиты OpenSSL создать self-signed сертификат очень просто. Сначала создается приватный ключ, затем на его основе готовится CSR, то есть запрос на сертификат, и наконец выполняется команда самоподписи. В процессе вводятся срок действия сертификата, доменное имя, информация об организации и другие параметры. Созданный сертификат обычно сохраняется в формате CRT или PEM и затем добавляется в конфигурацию веб-сервера. Для Nginx, Apache и других серверов синтаксис немного отличается, но основной принцип одинаков.
Риски в production среде
Использование self-signed сертификата в production влечет несколько серьезных рисков. Во-первых, пользователи, увидев предупреждение, немедленно покидают сайт и переходят к конкурентам, что резко снижает конверсию. Во-вторых, Google и другие поисковые системы понижают такие сайты в выдаче, а иногда и вовсе не показывают. В-третьих, нет защиты от man-in-the-middle атак, поскольку пользователь вынужден каждый раз принимать сертификат и не может отличить подлинный от поддельного. В-четвертых, платежные системы и другие важные интеграции не работают с такими сайтами.
Что использовать вместо self-signed
Для production среды всегда используйте сертификат, подписанный доверенным центром сертификации. Самый простой и бесплатный вариант — сертификат Let's Encrypt, действительный 90 дней и обновляющийся автоматически. Для коммерческих целей можно использовать сертификаты DigiCert, Sectigo, GlobalSign, которые дают дополнительную гарантию и страховку. Для банков и платежных систем рекомендуется EV сертификат, прошедший высший уровень проверки и отображающий название организации в адресной строке.
Практика Sayt.uz
Клиентам хостинга Sayt.uz сертификат Let's Encrypt устанавливается полностью бесплатно и автоматически. Обновление происходит автоматически каждые 60 дней, без участия клиента. Коммерческие DV сертификаты начинаются от 89 тысяч сум, OV от 290 тысяч сум, а EV от 890 тысяч сум. Наши специалисты в 99 процентах случаев устанавливают сертификат за 20 минут. Переход с self-signed на доверенный сертификат выполняется бесплатно.