- PVSM.RU - https://www.pvsm.ru -
Написал программу для автоматического выписывания ssl-сертификатов налету (при первом запросе к домену).
Для начала работы программы её достаточно просто запустить, настраивать не надо совсем (даже домены для сертификатов указывать не надо).
github.com/rekby/lets-proxy/releases/latest [1]
Подробности внутри.
Кроме того запуск этого чуда на windows + iis оказался нетривиальным и там коллега придумывал дополнительные костыли.
Требования:
1. Со стороны клиента поддержка SNI [2] (основными браузерами давно поддерживается).
2. Со стороны сервера: чтобы туда можно было из golang бинарник скомпилировать (windows,linux,freebsd,mac). Проверяется на windows и linux.
Принцип работы:
Программа работает как реверс-прокси, выписывая правильные сертификаты на ходу по мере необходимости.
При получении запроса через расширение SNI программа узнаёт домен для которого нужен сертификат. Если сертификат уже есть — дальше идёт обработка с уже существующим сертификатом.
Если сертификата нет — отправляется запрос в lets encrypt на получение сертификата из SNI-заголовка и потом обработка идёт с только что полученным сертификатом (сертификат сохраняется в кеш).
В lets encrypt домен проверяется методом tls-sni-01 [3] — путём выдачи сертификата на специально сформированный https-запрос.
Время на все проверки и получение сертификата — около 3 секунд. Это задержка для первого https-запроса к домену.
Дальше запрос уходит на тот же IP, на котором был принят https-запрос, но уже на порт 80 и без шифрования — т.е. обычный http.
Автор: rekby
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/https/211822
Ссылки в тексте:
[1] github.com/rekby/lets-proxy/releases/latest: https://github.com/rekby/lets-proxy/releases/latest
[2] SNI: https://ru.wikipedia.org/wiki/Server_Name_Indication
[3] tls-sni-01: https://tools.ietf.org/html/draft-ietf-acme-acme-01#page-40
[4] Источник: https://habrahabr.ru/post/315678/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.