Новая буква в адресной строке. Перевод сайта на HTTPS

Перевёл вчера сайт на HTTPS. Оказалось не так сложно, как я предполагал — на всё ушла пара часов. Функционально ничего не должно было измениться — ну, если не считать того, что я починил вход через Mail.Ru и Яндекс, который не работал уже давно, но обнаружил я это только в процессе тестирования HTTPS. Всю суть изменений иллюстрирует диалог с Юлей:
— Чем занимаешься? — спросила она, когда я ковырялся в настройках.
— Сайт перенастраиваю, — ответил я, не вдаваясь в подробности.

Через пресловутые пару часов я уже листал страницы своего блога, проверяя, всё ли работает. Юля спрашивает:
— А что ты сделал?
Показываю мышкой на адресную строку (уже сам понимая комичность ситуации):
— Видишь, вот тут буковка "s" появилась...

На деле вся суть изменения заключается в том, что теперь вся коммуникация с сайтом происходит по зашифрованному каналу. Ни мне, ни большинству моих посетителей это ровным счётом ничего не даёт, но тут, как обычно, приходится следовать моде, как и в случае с "дружественностью к мобильникам". Главным двигателем тренда является опять же Гугл, который пару лет назад пообещал начать "поражать в правах" (то есть понижать в поисковой выдаче) сайты, не использующие HTTPS.

На самом деле, меня бы и это не сподвигло почесаться, если бы не появление Letsencrypt — удостоверяющего центра, совершившего революцию в процедуре выдачи SSL-сертификатов (то есть того, без чего невозможно сделать у себя HTTPS). Сертификаты от Letsencrypt, во-первых, бесплатны, а во-вторых, процесс их получения и ротации полностью автоматизирован. Концепция начинает потихоньку завоёвывать Интернет, приводя к тому, что в последнее время держать сайт без HTTPS действительно стало моветоном :)

Так что я снова в тренде. Надеюсь, что всё по-прежнему работает, но если что отвалилось — вы знаете, куда писать :)

P.S. Кстати, в процессе настройки имел место забавный "побочный эффект": я впервые прочувствовал всю мощь OpenSource. Подробности, впрочем, интересны будет только айтишникам.

Поскольку сайт организован на Docker-контейнерах, мне требовалось прикрутить ещё один контейнер с Letsencrypt, который бы занимался сертификатами. Так как я живу на AWS, мне нужен был такой контейнер, который умел бы работать с AWS Route53, чтобы подтверждать права на домен. Готового решения я не нашёл — и, вероятнее всего, мне пришлось бы пилить его самостоятельно, если бы не несколько удачных стечений обстоятельств.

Пару лет назад я настраивал Letsencrypt на работе, где у нас тоже всё на AWS и контейнерах. Я тогда нашёл проект dns-certbot, который умел практически всё, что нужно, за исключеним одной мелочи. Я его слегка допилил и оформил в виде отдельного публичного проекта dns-letsencrypt в репозитории нашей конторы. Исходный проект, кстати, через некоторое время исчез из доступа.

Спустя некоторое время Letsencrypt начал поддерживать wildcards, но, поскольку нам для наших нужд эта фича была не нужна, никто не стал эту фичу прикручивать к нашему проекту. Однако это сделал совершенно посторонний человек, который создал PR с необходимыми изменениями. После небольшой доработки согласно конструктивной критике с моей стороны изменения были приняты в наш проект.

И вот теперь, когда мне понадобился контейнер с Letsencrypt, который умеет работать с AWS, и при этом также умеет заказывать сертификаты с wildcards, всё было уже готово — мне осталось просто взять готовый проект и начать использовать :)

Комментарии

Кстати, простой пример, зачем это может быть нужно обычному пользователю на обычном сайте без всяких кредитных карт. Теперь на твой сайт нерадивые провайдеры не могут добавить свой баннер:
https://meduza.io/slides/mobilnye-operatory-podsovyvayut-abonentam-banne...

Изображение myx

О, я не знал, что эта тема ещё актуальна! Мне казалось, что как раз в связи с практически повсеместным внедрением HTTPS опсосы прекратили эту идиотскую практику. Слово "нерадивые" в данном случае очень мягкое :)