Небольшая заметка про wildcard сертификаты Let’s Encrypt

    Все уже, наверное, в курсе про такую организацию как Let’s Encrypt. С некоторых пор там можно получить и wildcard сертификат. В этой короткой заметке я опишу пару не очень очевидных моментов, с которыми столкнулся.

    1. Wildcard сертификат можно получить только через DNS plugins:
    Doing domain validation in this way is the only way to obtain wildcard certificates from Let’s Encrypt.
    Т.е. наши варианты — это либо один из DNS plugins, либо manual + preferred-challenges=dns-01.

    Подробнее здесь.
    Использование DNS plugins подробно описано в документации по ссылке выше.

    При использовании режима manual, нужно будет вручную добавить TXT запись в DNS. Эта запись каждый раз будет разная, т.е. автоматическое продление сертификата в этом случае возможно только через хуки certbot. Там же, кстати, можно повесить и команду, например, на рестарт nginx.

    2. Нужно использовать сервер с API v.2:

    https://acme-v02.api.letsencrypt.org/directory

    Вероятно в будущих версиях certbot произойдет переход на использование API v.2 по умолчанию, но пока вот так.

    Я использую docker для запуска certbot. Весьма удобно. Таким образом, команда для получения сертификата получается вот такая:

    docker run -it --rm \
    -v /docker/volumes/etc/letsencrypt:/etc/letsencrypt \
    -v /docker/volumes/var/lib/letsencrypt:/var/lib/letsencrypt \
    -v /docker/volumes/var/log/letsencrypt:/var/log/letsencrypt \
    certbot/certbot \
    certonly --manual \
    --preferred-challenges dns-01 \
    --server https://acme-v02.api.letsencrypt.org/directory \
    --register-unsafely-without-email --agree-tos \
    --manual-public-ip-logging-ok \
    -d example.com -d *.example.com

    Результаты работы certbot будут доступны в /docker/volumes/, откуда их можно подключать в другие контейнеры.

    Обратите внимание на ключ «manual-public-ip-logging-ok» — если его не указать, то появляется вот такой вопрос при запуске:
    NOTE: The IP of this machine will be publicly logged as having requested this
    certificate. If you're running certbot in manual mode on a machine that is not
    your server, please ensure you're okay with that.

    Are you OK with your IP being logged?
    Как я понял, пока адреса нигде не доступны (но логируются), их публикация есть в ближайших планах. На мой личный взгляд, немного странная политика.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 17

      +3
      Рекомендую использовать acme.sh, он умеет работать с апи DNS провайдеров и нет нужды думать об этих тонкостях. Очень удобно.
        0
        Так суть же не меняется, это «фишки» LE. Т.е., например, плагин dns_digitalocean точно так же работает с API DO.
          0
          Основная проблема когда у DNS провайдера нет API.
          С удобством возникают сложности.
            0
            Ну есть же варианты сменить провайдера DNS. Например, на бесплатный cloudflare или на немного платный route53/google dns. А так, у большинства крупных хостингов/регистраторов есть API. На самый крайний случай можно поднять свое self-hosted решение.
              0
              Ну вот у хетцнера (довольно крупный да) нет API.
              Но да в итоге можно смигрировать на какой нить яндекс, который с точки зрения пользования полное убожество, зато есть API.
                0
                По моим личным ощущениям, у хетцнера по части интерфейсов (вообще, глобально) все застыло где-то годах так в 00-х :(
                  0
                  Вашими мольбами. В последние полгода перекерачивают на свежие интерфейсы.
                  Как по мне так лучше остались бы в 00-х.
                  Ну а в части ДНС, их настройка это фактически конфиг bind для зоны, что в чем-то удобно.
        0
        У меня есть такой, возможно дилетантский, вопрос. А есть ли возможность подключить этот сертификат к популярным хостингам, вроде reg[dot]ru или nic[dot]ru?
        Пройдя через дебри документации хостинга reg[dot]ru, я лишь в конец запутался. Только предлагают купить свой сертификат за 1500 рублей в год.
        • НЛО прилетело и опубликовало эту надпись здесь
            0
            Даже если не VPS, то вполне может быть возможность залить свой сертификат через хостинговую панель управления.
              +1
              Сейчас многие хостеры добавляют себе установку сертификата от Let’s Encrypt с автопродлением в один клик.
            0
            У reg.ru точно есть на их хостинге, с автопродлением, но обычный, без wildcard. Для wildcard сейчас нужен свой сервер и делегирование NS на него/поддерживаемый acme.sh сервера NS. Впрочем, можно подолбать поддержку, авось, через полгода добавят для случая, когда и хостинг, и имя сайта куплено у них.
              0
              www.reg.ru/support/ssl-sertifikaty/ustanovka-ssl-sertifikata
              Ссылки «Установка SSL-сертификата в ISPmanager», «Установка SSL-сертификата в Parallels Plesk» и «Установка SSL-сертификата в cPanel» в зависимости от вашей панели (ага, регру при заказе дает выбрать наиболее удобную вам панель) если ваш вопрос про «обычный виртуальный хостинг».

              Но при этом сертификат уже должен быть у вас на руках (сам файл сертификата и приватный ключ к нему).

              Если вы под «подключить» имеете введу «выпускать сертификат на сервере регру и сразу же там его использовать, по аналогии с тем, как работает certbot», то я сходу затрудняюсь ответить можно ли это делать на серверах вирт. хостинга в регру или нике. С одной стороны я точно знаю что под isp manager и cpanel (про plesk не знаю, не работал с ним никогда, но почти уверен что и под него тоже) есть модули\плагины, которые позволяют клиентам «автоматически выпускать и продлевать сертификаты прям на сервере», то есть тыкнуть пару кнопок и забыть про этот, с другой стороны я совершенно не уверен что эти плагины установлены.
              Так что если хостинга у вас еще нет и вы только собираетесь его покупать, то лучше всего задать этот вопрос саппорту компании, если же хостинг уже куплен, то смотрим в панель управления и опять задаем вопрос саппорту если самому разобраться не получается.

              Зы если под «хостингом» имеется ввиду VPS, то тут точно проблем не будет, если покупаете VPS с панелью, то просто ставите плагин и настраиваете из панели. Если VPS без панели, то ставите любой клиент (certbot или acme.sh). Причем так у всех хостеров.
                0

                Хочу дополнить что у LE есть stand-alone опция, когда можно на любой Linux машине выпустить сертификат руками залив необходимые файлы на сервер.

                  0
                  Выпуск сертификата должен осилить acme.sh в режиме webroot. В крайнем случае можно и без рутовых прав поставить себе certbot в ~username/bin (возможно потребуется добавить библиотек по вкусу) и использовать его (конечно только в режиме webroot или dns), но убедить веб-сервер, настроенный через панель, забирать сертификат из вашего домашнего каталога скорей всего не получится.

                  В случае «используем виртуальный хостинг не поддерживающий LE и сертификат от LE» основная проблема на мой взгляд — не выпуск сертификата, а его автоматическая «заливка» в панель. Придется либо с API разбираться (при условии что добрые администраторы хостинга не закрыли его «на всякий случай»), либо «изображать браузер скриптами» (curl и парсить html-ответы, либо автоматизация действий в настоящем браузере), либо ручками постоянно его обновлять(каждые 90 дней). Это конечно технически решаемо, но боюсь не для среднестатистического покупателя услуги «виртуальный хостинг». Так что лучше спросить у саппорта «есть ли поддержка LE в панели хостинга», и если нету, то уходить к конкурентам или купить классический сертификат на год (раз в год можно и руками его залить).

              +2
              Я использую docker для запуска certbot. Весьма удобно.

              image
                0
                Как вы догадались? О_о

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

              Самое читаемое