Получение SSL-сертификата Let's Encrypt для домена с помощью Certbot

В этой статье рассмотрим процесс получения SSL-сертификата Let's Encrypt для домена с помощью Certbot. Для этого должны быть выполнены все настройки, описанные в предыдущей статье. Напомню, что все действия связаны с работой сервера, настроенного на работу в в связке Apache+NGiNX. Описанные действия должны работать и при одиночно установленном NGiNX. Все действия лучше проводить в описанной последовательности. Тесты должны проходить без ошибок.

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Небольшая ремарка о доменном имени, используемого в качестве примера

Действия, описанные ниже, приводятся для домена mb4.ru. Вместо него нужно подставлять то доменное имя, для которого требуется получить SSL-сертификат Let's Encrypt.

Тест получения SSL-сертификата Let's Encrypt для домена с помощью Certbot

Let's Encrypt ограничивает количество обращений за сертификатами, потому сначала попробуем получить необходимый сертификат в режиме для тестов командой certbot certonly --dry-run -d mb4.ru -d www.mb4.ru:

# certbot certonly --dry-run -d mb4.ru -d www.mb4.ru
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for mb4.ru
http-01 challenge for www.mb4.ru
Using the webroot path /var/www/html for all unmatched domains.
Waiting for verification...
Cleaning up challenges
Running post-hook command: service nginx reload

IMPORTANT NOTES:
 - The dry run was successful.

Если тест проходит без ошибок, то последняя строчка должна быть именно такой:  - The dry run was successful. Если тест выявляет какие-то ошибки в настройках сервера, которые не дают ему полностью провести все действия для имитации получения SSL-сертификата, нужно внимательно изучить все сообщения в блоке IMPORTANT NOTES:, исправить их и провести тест вторично. И так до тех пор, пока все ошибки не будут устранены и тест начнёт заканчиваться строкой, указанной выше. В работе над устранением ошибок получения SSL-сертификата может помочь чтение логов Let's Encrypt, которые пишутся в /var/log/letsencrypt/letsencrypt.log.

Получения SSL-сертификата Let's Encrypt для домена с помощью Certbot

После того, как тест успешно пройден, можно запросить реальные SSL-сертификаты Let's Encrypt для домена с помощью Certbot. В запросе лучше сразу указать доменное имя с www и без www, чтобы потом не запрашивать отдельно. И для других поддоменов, которые могут быть алиасами основного домена. Естественно, всё это должно быть работающим, то есть правильно прописано в конфиге виртуального хоста NGiNX, и успешно проходить тест, описанный выше.

Команда Certbot для запуска процесса получения реальных SSL-сертификатов Let's Encrypt для домена выглядит следующим образом: certbot certonly -d mb4.ru -d www.mb4.ru. Дополнительные домены и поддомены можно дописать через пробел с использованием параметра -d. Выполнение этой команды проходит следующим образом:

# certbot certonly -d mb4.ru -d www.mb4.ru
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for mb4.ru
http-01 challenge for www.mb4.ru
Using the webroot path /var/www/html for all unmatched domains.
Waiting for verification...
Cleaning up challenges
Running post-hook command: service nginx reload

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/mb4.ru/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/mb4.ru/privkey.pem
   Your cert will expire on 2019-09-01. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

В папке /etc/letsencrypt/archive появится папка с именем домена, в которой будут лежать полученные сертификты:

tree /etc/letsencrypt/archive
/etc/letsencrypt/archive
└── mb4.ru
    ├── cert1.pem
    ├── chain1.pem
    ├── fullchain1.pem
    └── privkey1.pem

1 directory, 4 files

А также будет создана папка с доменным именем в /etc/letsencrypt/live в которой будут храниться символические ссылки на файлы ключей:

# tree /etc/letsencrypt/live
/etc/letsencrypt/live
├── mb4.ru
│   ├── cert.pem -> ../../archive/mb4.ru/cert1.pem
│   ├── chain.pem -> ../../archive/mb4.ru/chain1.pem
│   ├── fullchain.pem -> ../../archive/mb4.ru/fullchain1.pem
│   ├── privkey.pem -> ../../archive/mb4.ru/privkey1.pem
│   └── README
└── README

1 directory, 6 files

Ключи по истечению срока годности будут меняться, а имена символических ссылок останутся неизменными.

Проверка полученных SSL-сертификатов Let's Encrypt для домена с помощью Certbot

С помощью утилиты openssl можно проверить полученные и хранящиеся на сервере SSL-сертификаты:

# openssl x509 -text -in /etc/letsencrypt/live/mb4.ru/cert.pem
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            ...
        Signature Algorithm: ...
        Issuer: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
        Validity
            Not Before: Jun  3 10:54:33 2019 GMT
            Not After : Sep  1 10:54:33 2019 GMT
        Subject: CN = mb4.ru
...

И ещё много дополнительной информации. Для того, чтобы просто получить список доменов, на которые получены SSL-сертификаты, проще воспользоваться командой:

# cat /etc/letsencrypt/live/*/cert.pem | openssl x509 -text | grep -o 'DNS:[^,]*' | cut -f2 -d:
mb4.ru
www.mb4.ru

Резюме

SSL сертификаты получены. Теперь их нужно прописать в конфиге виртуальных хостов NGiNX так, чтобы перевести сайты на работу по защищённому протоколу HTTPs.

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню