Поддержка https совсем без настроек

Автор: admin от 20-11-2016, 14:25, посмотрело: 143

Написал программу для автоматического выписывания ssl-сертификатов налету (при первом запросе к домену).
Для начала работы программы её достаточно просто запустить, настраивать не надо совсем (даже домены для сертификатов указывать не надо).

github.com/rekby/lets-proxy/releases/latest

Подробности внутри.




Требования:
1. Со стороны клиента поддержка SNI (основными браузерами давно поддерживается).
2. Со стороны сервера: чтобы туда можно было из golang бинарник скомпилировать (windows,linux,freebsd,mac). Проверяется на windows и linux.

Принцип работы:
Программа работает как реверс-прокси, выписывая правильные сертификаты на ходу по мере необходимости.
При получении запроса через расширение SNI программа узнаёт домен для которого нужен сертификат. Если сертификат уже есть — дальше идёт обработка с уже существующим сертификатом.

Если сертификата нет — отправляется запрос в lets encrypt на получение сертификата из SNI-заголовка и потом обработка идёт с только что полученным сертификатом (сертификат сохраняется в кеш).
В lets encrypt домен проверяется методом tls-sni-01 — путём выдачи сертификата на специально сформированный https-запрос.

Время на все проверки и получение сертификата — около 3 секунд. Это задержка для первого https-запроса к домену.

Дальше запрос уходит на тот же IP, на котором был принят https-запрос, но уже на порт 80 и без шифрования — т.е. обычный http.

Источник: Хабрахабр

Категория: Информационная безопасность » Криптография

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *