Все уже, наверное, в курсе про такую организацию как 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?
Как я понял, пока адреса нигде не доступны (но логируются), их публикация есть в ближайших планах. На мой личный взгляд, немного странная политика.

Комментарии (12)


  1. Averrin
    02.06.2018 21:15

    Рекомендую использовать acme.sh, он умеет работать с апи DNS провайдеров и нет нужды думать об этих тонкостях. Очень удобно.


    1. isden Автор
      02.06.2018 21:20

      Так суть же не меняется, это «фишки» LE. Т.е., например, плагин dns_digitalocean точно так же работает с API DO.


  1. Carduelis
    02.06.2018 21:15

    У меня есть такой, возможно дилетантский, вопрос. А есть ли возможность подключить этот сертификат к популярным хостингам, вроде reg[dot]ru или nic[dot]ru?
    Пройдя через дебри документации хостинга reg[dot]ru, я лишь в конец запутался. Только предлагают купить свой сертификат за 1500 рублей в год.


    1. aicantar
      02.06.2018 21:21

      Если у вас там VPS, то можно.
      Если нет, то, скорее всего, нельзя (но лучше обратиться напрямую в поддержку).


      1. isden Автор
        02.06.2018 21:22

        Даже если не VPS, то вполне может быть возможность залить свой сертификат через хостинговую панель управления.


        1. sumanai
          02.06.2018 21:27
          +1

          Сейчас многие хостеры добавляют себе установку сертификата от Let’s Encrypt с автопродлением в один клик.


    1. sumanai
      02.06.2018 21:26

      У reg.ru точно есть на их хостинге, с автопродлением, но обычный, без wildcard. Для wildcard сейчас нужен свой сервер и делегирование NS на него/поддерживаемый acme.sh сервера NS. Впрочем, можно подолбать поддержку, авось, через полгода добавят для случая, когда и хостинг, и имя сайта куплено у них.


    1. TaHKucT
      02.06.2018 22:33

      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). Причем так у всех хостеров.


      1. Abiron
        03.06.2018 02:43

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


        1. TaHKucT
          03.06.2018 03:45

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

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


  1. AnViar
    04.06.2018 10:54

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

    image


    1. isden Автор
      04.06.2018 10:57

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