Программирование

SSL / HTTPS

Что такое SSL / HTTPS?

Текст между браузером и сервером шифруется сертификатом. Сертификат подтверждает имя домена. Соединение идёт через порт 443. Старые протоколы SSL выключены. Даже когда говорят SSL, рабочий механизм — TLS.

Для чего нужен SSL / HTTPS?

Он нужен, чтобы адрес сайта и форма не читались по пути.

  • Защитить страницу входа
  • Зашифровать вызов API
  • Убрать предупреждение браузера
  • Перенаправить HTTP на HTTPS

Что можно делать с SSL / HTTPS?

Let's Encrypt даёт бесплатный сертификат примерно на 90 дней. certbot может добавить порт 443 и перенаправление в конфиг Nginx. Когда сертификат кончается, сайт показывает предупреждение. Автообновление надо проверить. Firewall открывает порт, сертификат шифрует содержимое. Это разное.

Сложно ли освоить SSL / HTTPS?

Первый сертификат для одного домена сейчас легко получить инструментом. Трудность в совпадении имени, сроке и смешанном прокси. Если сертификат для example.com, www надо записать отдельным именем. Самоподписанный сертификат браузер не доверяет.

Плюсы и ограничения

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

Основные понятия

Ключ остаётся тайным. Сертификат открыт. Цепочка показывает, кто подписал сертификат.

  • 443 — порт HTTPS
  • 80 — старый порт HTTP
  • Let's Encrypt даёт около 90 дней
  • HSTS просит у браузера только HTTPS

Короткий пример

Эта команда просит сертификат для одного домена на сервере с Nginx. Домен и конфиг Nginx должны быть готовы раньше.

sudo certbot --nginx -d example.com

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

  • SSL и TLS — одно и то же? В речи их путают. Сегодня работает TLS. SSL — старое имя.
  • HTTPS делает сайт безопасным? Он шифрует путь. Код самого сайта он не чистит.
  • Сертификат навсегда? Нет. Срок кончается, его надо обновлять.