Владимир Зарыпов (krre31) wrote,
Владимир Зарыпов
krre31

Category:

Океан. SSL

У меня очень плохая новость для наших врагов. Я зашифровал трафик между браузером и сервером, и теперь будет очень трудно определить, кто что отправляет, и какие данные отдаёт сервер. Для этого понадобилось добавить поддержку SSL, в результате чего адрес сайта поменялся с http://ocean-mandela.info на https://ocean-mandela.info. Если раньше, скажем, в браузере Chrome ссылка выглядела так:

То теперь будет выглядеть вот так:


К немалому своему удивлению сделать это оказалось очень трудно. Я начал заниматься этим ещё в июле, но ничего не получилось, и пришлось процесс на некоторое время отложить. Сложность заключалась в том, что, во-первых, серверов, обслуживающих сайт, два - веб-сервер и API-сервер. Первый, соответственно, запускается на Node.js, а второй - на библиотеках из Rust. В каждом свои нюансы, и если в одном сервере SSL работает, то в другом нет. Пока исправляешь в одном, перестаёт работать в другом, и наоборот. Из-за того, что они по-разному относятся к сертификатам, которые я им подсовываю.

Во-вторых, в разработке используется два окружения - отладочное на моём компьютере и боевое на проде. Аналогично, если работает у меня локально, то перестаёт на проде. А если нормально работает на проде, то не работает локально. Просто беда какая-то.

В третьих, для шифрования трафика обязательно нужен сертификат, а разновидностей их целый зоопарк. Бывают сертификаты доверенные, выпущенные специальным центром сертификации под конкретное доменное имя, а бывают самоподписанные, когда сам себе сделал и пользуешься. И вот настройка этих сертификатов - это просто какой-то вынос мозга. Самоподписанный хорошо подходит для отладки, но не работает на проде, а подписанный центром работает на проде, но не работает локально, потому что локалхост - это не тот домен, который ему нужен.

А теперь сами подсчитайте, сколько получается комбинаций, которые нужно одновременно утрясти.

Я эти сертификаты, и сяк. Доходило уже до того, что почти всё заработало, но комбинация всё равно оказывалась неудачная, и где-то опять не стыкуется. После множества попыток удалось, наконец, сложить всё вместе. Сам был в шоке. Доверенный SSL-сертификат под свой домен я взял у ZeroSSL. У них там есть бесплатный тарифный план, который позволяет на халяву заказывать сертификат сроком на три месяца. По окончанию этого срока нужно идти и создавать новый. Рутина, но что поделаешь. А самоподписанный сертификат я сделал при помощи утилиты mkcert. Плюс этой утилиты в том, что она не просто их создаёт, а ещё что-то запихивает в браузеры, чтобы они не ругались на эту домашнюю поделку. Ну, и конечно, пришлось много переписать программного кода, потому что по умолчанию поддержка SSL нигде не предоставляется, и надо всё везде допиливать, ставить какие-то библиотеки, добавлять новые настройки - короче, столько пришлось подолбаться, что не хочется даже и вспоминать.

Зато теперь у меня развязаны руки, чтобы сделать новый качественный скачок в развитии сайта. До сих пор меня останавливали две вещи - нужно было перевести разработку фронтенда с JavaScript на TypeScript и добавить поддержку SSL. И то, и другое оказалось делом трудным, поэтому работа долго стояла на месте. TypeScript я уже добавил немного ранее, а теперь закрыл вопрос по SSL. Всё это позволяет перейти к написанию новых типов запросов к серверу, что особенно актуально в свете разработки форума, которым я занимаюсь уже почти неделю. Если раньше я передавал в каждом запросе id пользователя, чтобы сервер понимал, какие у него права, и какие нужно выдать данные, то теперь я могу просто засунуть токен пользователя в заголовок каждого запроса и не замусоривать API. До сих пор использовать токен было нельзя, потому что трафик был открытый, а гонять по такому трафику токен - это равнозначно добровольной выдаче врагам пароля. Не то чтобы так совсем нельзя, но получается очень по-детски и не по феншую.

Если вы далеки от IT и программирования в частности, то, конечно, вряд ли что-то из написанного поняли, но в этом и нет никакой нужды, потому что всё вышенаписанное было на самом деле прелюдией для того, чтобы сообщить вам самую важную новость. Если с сегодняшнего дня вы попытаетесь зайти на сайт и увидите, что не получается установить соединение, то это значит, что вам нужно поменять ссылку на эту:

https://ocean-mandela.info

По-хорошему, я должен был бы сделать редирект с http протокола на https, и я даже некоторое время этим занимался, но потом забил. Решил, что ну её, ещё одну сложность в сайт добавлять. Если вы заходите на сайт, вводя название вручную, то для вас, скорее всего, ничего не поменяется. Проблемы с доступом будут больше у тех, кто добавил сайт в закладки. Так вот, просто удалите старую закладку и создайте новую, и всё будет хорошо.

P.S. от 25.10.2020. На меня надавили, и я сделал-таки редирект с http на https. Теперь работают все старые ссылки, которые есть у нас в Телеге и везде, где найдёте. Также будут работать все старые закладки в браузерах.
Tags: океан
Subscribe

Posts from This Journal “океан” Tag

  • Океан. Хлам

    Добавил перемещение низкорейтинговых мандел в хлам. Это значит, что такие манделы не будут показываться в общем каталоге, но будут видны, если…

  • Океан. Полнотекстовый поиск

    Сделал, наконец, фичу, реализацию которой очень долго откладывал, потому что она сложная, а я животное ленивое и сложностей очень боюсь.…

  • Океан. Лента новостей

    Придумал новую киллер-фичу - ленту новостей. Она объединяет в себя сообщения о появлении новых мандел, комментариев к манделам, новых тем на форуме…

  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 25 comments

Posts from This Journal “океан” Tag

  • Океан. Хлам

    Добавил перемещение низкорейтинговых мандел в хлам. Это значит, что такие манделы не будут показываться в общем каталоге, но будут видны, если…

  • Океан. Полнотекстовый поиск

    Сделал, наконец, фичу, реализацию которой очень долго откладывал, потому что она сложная, а я животное ленивое и сложностей очень боюсь.…

  • Океан. Лента новостей

    Придумал новую киллер-фичу - ленту новостей. Она объединяет в себя сообщения о появлении новых мандел, комментариев к манделам, новых тем на форуме…