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 делает сайт безопасным? Он шифрует путь. Код самого сайта он не чистит.
- Сертификат навсегда? Нет. Срок кончается, его надо обновлять.