Мы задумались о переезде на HTTPS в декабре 2016. Это дало бы нам чуть больше производительности с HTTP/2, безопасную передачу данных, а Хром начал бы считать наш сайт «надёжным».
19 декабря 2017 года мы переключили сайт бюро на HTTPS и HTTP/2. Переезд занял год по двум причинам: другие приоритеты и ссылки с http://
Расскажу, как разбирались со всем этим, в хронологическом порядке.
Январь
Рассказываем Артёму про HTTPS и светлое будущее, получаем добро. Ничего не начинаем делать, потому что все заняты новым сайтом бюро.
Февраль
Запускаем новый сайт.
Смотрим, что мешает прямо сейчас перейти на HTTPS — небезопасные ссылки. Если страница загружена по HTTPS, браузер не загружает стили, скрипты и шрифты по http://. Страница молча ломается.
К сожалению, на сайте бюро такого полно. Например, проекты в портфолио используют jQuery с http://code.jquery.com, а основной файл со стилями сайта загружает Бюросанс и Бюросериф по HTTP. Если прямо сейчас включить HTTPS, сайт перестанет работать.
Март
Придумываем стратегию миграции. Договариваемся, что все новые сервисы запускаем сразу с HTTPS, а на старых страницах исправляем ссылки на небезопасные ресурсы по правилу бойскаута — «оставляйте страницу чище, чем вы её застали».
Разработчик исправляет подпись к фотографии автора на промостранице «Типографики и вёрстки». Замечает проблемные ссылки:
<script src="http://artgorbunov.ru/js/doublehover.js"></script>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<link href="http://cdnjs.cloudflare.com/ajax/libs/fotorama/4.6.4/fotorama.css">
Помня о правиле бойскаута, исправляет их таким образом, чтобы они работали и по HTTP, и по HTTPS:
<script src="/js/doublehover.js"></script>
<script src="//code.jquery.com/jquery-1.10.2.min.js"></script>
<link href="//cdnjs.cloudflare.com/ajax/libs/fotorama/4.6.4/fotorama.css">
Апрель
Решаем, что сначала переедем с artgorbunov.ru на bureau.ru. Ставим HTTPS на паузу.
Кроме того, мы забыли про СЕО. Перед переездом надо разобраться с тем, что поисковики плохо видят сайт бюро: поправить непонятные 302 редиректы, разобраться с поддоменами и дублями, добавить robots.txt и сайтмап.
Май — июнь
Исправляем редиректы, разбираемся с поддоменами, добавляем сайтмапы и robots.txt.
Придумываем стратегию миграции с artgorbunov.ru на bureau.ru без потерь пользовательских сессий и кук. Переезжаем на bureau.ru.
Июль
Сертификаты автоматически выдаёт и продлевает Certbot
Возвращаемся к HTTPS. Настраиваем bureau.ru так, чтобы работал и по HTTPS. Сертификаты берём в Let’s Encrypt. HTTPS‑версию скрываем от всех паролем.
Сертификаты автоматически выдаёт и продлевает Certbot
Август
Благодаря правилу бойскаута, большая часть страниц в портфолио готова к HTTPS. Проходимся по HTTPS‑версии вручную, ищем, что ещё сломалось. Собираем в список:
Сентябрь — ноябрь
Готовим к HTTPS главное меню, страницы курсов и школ. Исправляем небезопасные ссылки в стилях и скриптах. Исправляем ссылки в советах: большую часть исправляем автоматически, оставшееся разбираем вручную.
Декабрь
Выбираем время для переезда. Неделя с 18 декабря подойдёт: закончилась первая ступень в школах, ближайший пуск (электронная полка) — 25 декабря.
Собираем чеклист для запуска:
редиректить все с http://bureau.ru на https://bureau.ru/;
перевести старый сервер с HTTP на HTTPS и HTTP/2;
поправить редиректы с artgorbunov.ru на https://bureau.ru;
перезапустить nginx;
переключить бэкенды на HTTPS;
обновить школьные штуки с Гугл‑рейтингом на работу с HTTPS;
обновить сайтмап;
убедиться, что все критичные подсистемы сайта работают: Бюросфера, привязка карт, запись в школы и на курсы, советы, книги и школьный кабинет;
оповестить всех.
19 декабря с 9:00 до 10:30 переводим bureau.ru на HTTPS и включаем HSTS.
Что дальше
Впереди ещё две сложных задачи: безопасные, доступные только по HTTPS, куки и потерянные лайки. О них — в будущих советах.