Бесплатный SSL и Widacard SSL сертификат от Let’s Encrypt, подключение в NGINX и автообновление

Thank you for reading this post, don't forget to subscribe!

Let’s Encrypt — центр сер­ти­фи­ка­ции, начав­ший рабо­ту в бета-режи­ме с 3 декаб­ря 2015 года, предо­став­ля­ю­щий бес­плат­ные крип­то­гра­фи­че­ские сер­ти­фи­ка­ты X.509 для TLS-шиф­ро­ва­ния. Про­цесс выда­чи сер­ти­фи­ка­тов пол­но­стью автоматизирован.

Wildcard-сер­ти­фи­кат — сер­ти­фи­кат откры­то­го клю­ча, кото­рый может исполь­зо­вать­ся с несколь­ки­ми под­до­ме­на­ми *.example.ru

Уста­нав­ли­ва­ем ути­ли­ту certbot

Полу­ча­ем SSL сер­ти­фи­кат. Тип про­вер­ки: TXT-запись в DNS

После чего certbot попро­сит для про­вер­ки про­пи­сать TXT-запись для домен­ных имен.
Про­пи­сы­ва­ем их на нашем dns-сер­ве­ре, ждем неко­то­рое вре­мя, чтоб они про­пи­са­лись и воз­вра­ща­ем­ся в кон­соль для подтверждения.

Обя­за­тель­но надо выждать неко­то­рое вре­мя, пока про­пи­шет­ся запись, ина­че про­вер­ка не прой­дет, вы не полу­чи­те сер­ти­фи­кат, и при сле­ду­ю­щем запро­се txt-запись будет другой

Сер­вис Let’s Encrypt так же выда­ет Wildcard SSL сер­ти­фи­ка­ты. Для его полу­че­ния выпол­ним запрос:

Срок дей­ствия SSL сер­ти­фи­ка­та от Let’s Encrypt огра­ни­че­на 3 меся­ца­ми, по-это­му для обхо­да это­го огра­ни­че­ния вос­поль­зу­ем­ся авто­ма­ти­че­ским обновлением

Автоматическое продление SSL-сертификата

Ищем путь до certbot:

Запус­ка­ем редак­ти­ро­ва­ние cron и добав­ля­ем строку:

В дан­ном слу­чае запуск скрип­та про­вер­ки и про­дле­ния сер­ти­фи­ка­та (если срок дей­ствия сер­ти­фи­ка­та закан­чи­ва­ет­ся) будет про­ис­хо­дить по поне­дель­ни­кам и чет­вер­гам в 00:00. После чего будет пере­за­пу­щен NGINX

Часть кон­фи­га:

[codesyntax lang="php"]

[/codesyntax]

 

============== ========================= ==================== ==============

SSL-сертификат Let’s Encrypt с автопродлением для NGINX

Уста­нав­ли­ва­ем пакеты

Кло­ни­ру­ем GitHub репо­зи­то­рий letsencrypt в ката­лог /opt/letsencrypt

Получаем ssl-сертификат

Пере­хо­дим в каталог

Запус­ка­ем скрипт

  • example.com, www.example.com — наш домен
  • webroot-path=/var/www/example.com/public_html — дирек­то­рия, где рас­по­ло­жен сайт

Запус­ка­ем при­ло­же­ние letsencrypt-auto без sudo

Если скрипт отра­бо­тал успеш­но, мы полу­чим сообщение:

В резуль­та­те в ката­ло­ге /etc/letsencrypt/live/www.example.com/ мы полу­чи­ли сле­ду­ю­щие файлы

  • cert.pem — сертификат
  • chain.pem — цепь сер­ти­фи­ка­тов Let’s Encrypt
  • fullchain.pem — объ­еди­нен­ные сер­ти­фи­ка­ты cert.pem и chain.pem
  • privkey.pem — при­ват­ный ключ

Сге­не­ри­ру­ем ключ Диф­фи-Хелл­ма­на и сохра­ним его в ката­лог /etc/ssl/certs/

Настройка Nginx

В ито­ге наш кон­фиг будет выгля­деть так

[codesyntax lang="php"]

[/codesyntax]

Про­ве­ря­ем и пере­за­гру­жа­ем Nginx

Автопродление ssl-сертификата

Для авто­про­дле­ния исполь­зу­ет­ся команда

Т.к. мы недав­но обнов­ля­ли сер­ти­фи­кат, то в ответ уви­дим сообщение

[codesyntax lang="php"]

[/codesyntax]

Доба­вим коман­ду для авто­про­дле­ния в crontab

Обновление скрипта letsencrypt

Ска­чи­ва­ем изме­не­ния для GitHub репо­зи­то­рия letsencrypt