>
Май 2017
Пн Вт Ср Чт Пт Сб Вс
« Апр    
1234567
891011121314
15161718192021
22232425262728
293031  

Бесплатный SSL в три клика, навечно.

Я работаю с let’s encrypt примерно с апреля этого года, выписывая сертификаты в больших количествах (много тысяч, постоянно добавляются новые).
Изначально это выглядело примерно так: одна программа составляет список доменов для которых нужен сертификат, вторая программа идёт и эти сертификаты выписывает, третья проверяет выписанные сертификаты и составляет их список для haproxy/nginx (потому что с неправильными сертификатами они не перезапустятся при обновлении списка сертификатов и все https-сайты лягут). Работает это вполне надёжно, но получается много компонентов.

бесплатный SSL

Кроме того запуск этого чуда на windows + iis оказался нетривиальным и там коллега придумывал дополнительные костыли.

Требования:

1. Со стороны клиента поддержка SNI (основными браузерами давно поддерживается).
2. Со стороны сервера: чтобы туда можно было из golang бинарник скомпилировать (windows,linux,freebsd,mac). Проверяется на windows и linux.
3. Домен соответствует правилам Lets encrypt, на данный момент это: длина домена 64 символа или короче, без punycode (т.е. что-то.рф сертификата не получит).
4. Сервер с сайтом доступен из публичной сети.

Принцип работы:

Программа работает как реверс-прокси, выписывая правильные сертификаты на ходу по мере необходимости.

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

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

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

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

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

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

Несмотря на простоту варианта по умолчанию у программы много ключей запуска для определения нюансов работы. Для полного перечня можно воспользоваться ключем –help.

 

Share Button
[Всего голосов: 8    Средний: 5/5]

Last updated by at .

Leave a Reply

You can use these HTML tags

<a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">