Ах, разработка программного обеспечения — это как приготовление борща: вроде бы всё просто, но без правильных ингредиентов и хорошей среды можно получить нечто несъедобное. Вот представьте: вы сделали классное приложение — будь то мобильный мессенджер для общения с котом или фронт-энд для сайта, где продают носки с единорогами.
И тут выясняется, что оно отказывается работать в продакшн среде! А причина проста — нет HTTPS, того самого волшебного протокола, который защищает ваши данные так же надежно, как бабушка прячет свои пирожки от внучат.
В современном мире без TLS (Transport Layer Security) никуда! Это как прийти на вечеринку в тапочках — все смотрят косо.
Но тут начинается самое интересное: чтобы поднять TLS-протокол, можно пойти двумя путями. Первый — заплатить за сертификат какой-нибудь англосаксонской компании. Вроде бы ничего сложного, только вот цена иногда заставляет задуматься: «А не купить ли мне лучше новый компьютер?» Второй путь — сделать сертификат самостоятельно!
Подписать его своим удостоверяющим центром и добавить этот центр в доверенные — ну прям как стать своим среди чужих.
К сожалению, у нас в России удостоверяющих центров нет таких, которые были бы прописаны во все популярные операционки и приложения. Есть конечно свои центры, но они работают примерно так же надёжно, как самоподписанные письма от Деда Мороза: вроде бы подписано, но никто не верит.
Так почему бы нам не последовать их примеру и сделать всё самостоятельно? Тем более для разработки это именно то что доктор прописал!
Давайте представим себе такую ситуацию: вы решили создать свой локальный удостоверяющий центр.
Это как открыть свою маленькую пекарню сертификатов на кухне дома. Сначала нужно создать приватный ключ и сертификат центра сертификации — звучит пафосно, правда?
На самом деле это пара команд в терминале и немного терпения. При выполнении команды вас попросят придумать пароль — запомните его крепко!
Потому что подписывать ключи теперь можно будет только с этим паролем. Вот вам анекдот для поднятия настроения: «Программист приходит к врачу и жалуется на память. Доктор спрашивает: „А пароль от чего забываете?“ Программист отвечает: „От всего!“»
После того как наш центр сертификации готов (и чувствует себя почти как владелец собственного банка), можно создавать сертификаты для сервисов или приложений. Для этого сперва создаём приватный ключ сервиса — тот самый секретный набор битов длиной 2048 штук (не волнуйтесь, это не количество лайков под вашим постом).
Но ключ без дополнительной информации — словно паспорт без фото: никто его не признает.
Здесь начинается магия работы с файлом расширения localhost.ext, куда мы записываем требования к сертификату: домены для подключения по имени и IP-адреса. Главное правило — доменные имена должны быть такими странными и уникальными, чтобы никто случайно не перепутал их с реальными адресами интернета или вашей домашней сети. Если хотите знать секреты редактирования файла hosts или настройки локального DNS-сервера – пишите мне!
Обещаю объяснить на пальцах даже тем, кто путает клавиши Ctrl и Alt.
Теперь настало время создать запрос к нашему удостоверяющему центру с просьбой заверить наш секретный ключ. Тут уже чувствуешь себя настоящим дипломатом на переговорах со вселенной безопасности!
Этот запрос похож на письмо счастья из банка – если бы банки слали такие письма вместо счетов за кредиты… Ну а дальше наступает главный момент истины – подпись запроса нашим центром сертификации.