• Получение бесплатных SSL сертификатов от Let's Encrypt при помощи Certbot

 #10272   IgorA100
 19 июн 2019, 21:07
Получение бесплатных SSL сертификатов от Lets Encrypt при помощи Certbot

Установка на Cemtos 7 :
- Инсталяция (подтянутся все необходимые зависимости:
Код: Выделить всёyum install certbot

- Создаем папку letsencrypt в которой будем генерировать сертификаты для всех своих доменов:
Код: Выделить всёmkdir /var/www/letsencrypt
chown www-data:www-data /var/www/letsencrypt

- Теперь нам нужно сделать так, чтобы любой запрос вида:
Код: Выделить всёhttp://example.com/.well-known/acme-challenge

приводил к физическому размещению:
Код: Выделить всё/var/www/letsencrypt/.well-known/acme-challenge

* Для версии Apache 2.3 и выше (если у Вас Apache + Nginx, то этого делать не нужно!) прописываем в конфигурационном файле:
Код: Выделить всёAlias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/

<Directory "/var/www/letsencrypt/.well-known/acme-challenge/">
    Options None
    AllowOverride None
    ForceType text/plain
    Require all granted
    RedirectMatch 404 "^(?!/\.well-known/acme-challenge/[\w-]{43}$)"
</Directory>

* Для Nginx прописываем в секцию
Код: Выделить всёserver {
listen domen.ru:80;

следующий код:
Код: Выделить всёlocation ^~ /.well-known/acme-challenge/ {
    default_type "text/plain";
    root /var/www/letsencrypt;   
    allow all;
}


- Регистрация в Let's Encrypt
Регистрация нужна для формирования ключевой пары, которой впоследствии подписываются все запросы, что позволяет удостовериться в подлинности отправителя. Это важно, так как все запросы передаются по открытым каналам и теоретически возможен их перехват и модификация.
Адрес электронной почты указываемый при регистрации используется для рассылки уведомлений, например, при неудачной попытке продления сертификата, поэтому следует указывать рабочий ящик, лучше всего собственный. Один и тот-же адрес можно использовать для регистрации на разных хостах, ограничений по этому параметру нет.

Для регистрации выполните команду:
Код: Выделить всёcertbot register -m admin@example.com

Для успешного прохождения процедуры вам потребуется всего-лишь согласиться с условиями использования. Учетная информация будет сохранена в каталог /etc/letsencrypt/accounts, если содержимое данной директории будет утрачено, то вы не сможете продлить сертификаты и вам придется получать их заново, создав новый аккаунт. Это следует учитывать, например, при переносе системы на новый сервер.

Если вам необходимо изменить адрес электронной почты аккаунта, скажем при смене администратора, то это можно сделать командой:
Код: Выделить всёcertbot register --update-registration -m new_admin@example.com

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

-Получение сертификата
Код: Выделить всёcertbot certonly --webroot --agree-tos --email name@example.ru --dry-run --webroot-path /var/www/letsencrypt -d domen.ru -d www.domen.ru

Ключ --dry-run включает тестовый режим, при котором производится симуляция получения сертификата

Сертификат получен, отлично! Но где нам его искать? Перейдем в /etc/letsencrypt/live где для каждого полученного сертификата будет создана папка с именем первого указанного в запросе домена, т.е. для нашего примера - example.com. Внутри будут находиться четыре файла:

cert.pem - собственно сертификат
chain.pem - цепочка доверия, включает корневой и промежуточный сертификаты Let's Encrypt
fullchain.pem - полная цепочка, включающая кроме содержимого chain.pem сам сертификат
privkey.pem - закрытый ключ сертификата, данный файл является секретным.

Источник: https://interface31.ru/tech_it/2017/04/ ... rtbot.html

Посмотреть содержимого сертификата можно командой:
Код: Выделить всёopenssl x509 -noout -text -in /etc/letsencrypt/live/домен.ру/cert.pem


Посмотреть срок действия сертификата можно командой:
Код: Выделить всёopenssl x509 -noout -dates -in /etc/letsencrypt/live/домен.ру/cert.pem

Вывод будет примерно такой:
Код: Выделить всёnotBefore=Dec 21 19:53:34 2019 GMT
notAfter=Mar 20 19:53:34 2020 GMT
 #10547   IgorA100
 06 май 2022, 20:33
Отозвать сертификат (предварительно забекапить каталог "/etc/letsencrypt"):
Код: Выделить всёcertbot revoke --cert-path /etc/letsencrypt/live/site.com/cert.pem