SSL

Jun 11, 2020 07:09

Всё течёт и всё меняется.
Вот и очередной простой и бесплатный способ получить SSL сертификат для сайта приказал долго жить.
Но я нашёл новый :)

Три недели назад сервис sslforfree перешёл под контроль zeroSSL и перестал делать wildcard сертификаты бесплатно.
Пришлось искать новый способ для сохранения "замочка" в адресной строке моих сайтов.
Порывшись в документации Let's encrypt, красивой оболочкой для которого был продавшийся sslforfree, я нашёл ещё пару сайтов, последовательно выполняющих достаточно хитрые команды запроса и получения сертификатов SSL.

Но с этим способом возникла проблема, потому что Яндекс.ДНС очень странно и медленно реплицирует изменения DNS-записей зарегистрированных на нём сайтов.
А это ключевой способ проверки принадлежности доменного имени.
Нужно создать TXT запись с именем _acme_challenge и неким случайным значением.
Затем надо нажать кнопочку "Проверить".
Если то что хочет Let's encrypt совпадает с ответом сервера DNS, то вы проходите на следующий уровень.
А если нет - извольте повторить запрос с начала.
И вот тут-то и вступает в силу магия Яндекс.ДНС.
Отказоустойчивость и многопоточность приводят к тому, что на последовательные одинаковые запросы приходят ответы от разных серверов из пула dns.yandex.ru.
Вот иллюстрирующий пример в котором часть ответов содержат "неудачное" прошлое значение записи, часть содержат новое, а часть не содержат ничего.
У меня есть предположение, что это связано с коротким промежутком между временем изменения DNS-записи и временем моего запроса (1-10 минут).
Возможно, зона просто не успевает реплицироваться.


Соответственно, угадать, что ответит Яндекс на запрос Let's encrypt достаточно сложно.
На сайте sslforfree была специальная кнопка, открывавшая окно валидации без обращения к серверам Let's encrypt.
Как в нем появляется ОК, значит можно отправлять запрос.

Короче.
Этот уровень мне пройти не удалось.
Даже подтвердив владение доменом один раз, я не смог продолжая тот же запрос повторить это с другим значением для получения wildcard сертификата (на домен и все его поддомены).
Безуспешно повторил несколько раз.
И приуныл.

Пошёл читать мануалы дальше.

Следующий путь - использовать тот или иной вариант certbot'а
Тут другая проблема.
Мои сайты разбросаны по разным операционным системам и веб-серверам (так вышло).
Поэтому мне нужны и pem и pfx варианты упаковки сертификатов в явном виде.
А certbot работает только под *nix подобными системами и колдует где-то внутри.
Пока myauu.ru хостился под Ubuntu я и проблем с этим не знал.
Как три года назад настроил, так оно само по себе и жило.
Но прошлой зимой та убунта померла по организационным причинам, а начинка сайта переехала под IIS.
И я начал делать сертификаты ручками на sslforfree каждые 90 дней.
Напоминание пришло, зашёл на сайт, всё сделал за 5 минут, разбросал по сайтам и забыл на три месяца.

После недолгого поиска нашлось решение в стиле бота и под Windows Server.
Называется win-acme.
CLI, opensource, free.
Интерактивное, с подробными пояснениями на каждом шагу.
Под Server Core работает ок.
Умеет читать конфиги IIS и искать в них домены, умеет запрашивать новые сертификаты Let's encrypt, умеет становиться в планировщик для их продления, умеет сохранять полученное в указанную папку в разных видах.



Короче, пока остановился на этом решении.
Буду наблюдать.

Результат.

ИТ

Previous post Next post
Up