Бесплатный SSL сертификат принимаемый браузерами для сайта можно выпустить используя пакет certbot Let's Encrypt. Рассмотрим как это сделать, будем использовать плагин Webroot.
Бесплатный SSL сертификат для сайта через Webroot Let's Encrypt
На официальном сайте компании приведено описание всех плагинов использование которых возможно, в том числе плагина webroot, который является самым популярным и будет рассмотрен далее.
Прежде всего про certbot
certbot (он же certbot-auto и letsencrypt) — скрипт, позволяющий выпускать, обновлять и устанавливать (для некоторых плагинов) SSL сертификаты
Плагины certbot делятся на 2 группы:
- Authenticators — используют команду certonly и выпускают сертификаты помещая файлы в каталог /etc/letsencrypt, на сервер сертификаты при этом не устанавливают; выпускается сертификат только для одного домена (если указано несколько — все сертификаты будут в одном файле).
- Intsallers — выпускают сертификаты и устанавливают их на сервер, за один раз при этом выпустить можно несколько сертификатов
Webroot относится к первой категории, т.е. сертификаты, выпущенные при помощи плагина на сервер не устанавливаются и если доменов несколько, скрипт запускающий выпуск нужно выполнять несколько раз.
Чтобы выпустить сертификат используется команда certonly с именем плагина, далее указываются домены и путь к директории с файлами сайтов
certonly --webroot --webroot-path /var/www/site1 -d site1.com --webroot-path /var/www/site2 -d site2.com
--
webroot-path можно заменить на -w, если SSL сертификат выпускается для нескольких сайтов учитывается последнее встречающееся в команде значение --
webroot-path (-w). В примере выше для домена site1.com это будет /var/www/site1, для домена site2.com — /var/www/site2.
Путь к корневой директории сайта нужен для того, чтобы certbot мог разместить в ней невидимый каталог .well-known, в нем acme-challenge. В acme-challenge в свою очередь будет находиться файл, содержимое которого проверяется сертификационным центром.
Подлинность домена со стороны Letsencrypt при использовании Webroot проверяется в два шага:
- запрос к DNS — имя домена должно разрешаться в IP адрес с которого запрашивается сертификат
- GET-запрос к /document-root/.well-known/acme-challenge/FILENAME
При этом важно, чтобы веб-сервер был настроен таким образом чтобы мог отдавать содержимое невидимых каталогов (.well-known невидимый поскольку начинается с точки).
Плагин Webroot Letsencrypt таким образом позволяет получить бесплатный SSL сертификат для сайта, который будет действовать 3 месяца и признаваться всеми современными браузерами.
Сертификат автоматически установлен не будет — его потребуется подключить на Nginx или Apache, также можно настроить автоматическое продление сертификата написав bash скрипт и добавив его в CRON.