В этой статье рассмотрим процесс получения SSL-сертификата Let's Encrypt для домена с помощью Certbot. Для этого должны быть выполнены все настройки, описанные в предыдущей статье. Напомню, что все действия связаны с работой сервера, настроенного на работу в в связке Apache+NGiNX. Описанные действия должны работать и при одиночно установленном NGiNX. Все действия лучше проводить в описанной последовательности. Тесты должны проходить без ошибок.
Небольшая ремарка о доменном имени, используемого в качестве примера
Действия, описанные ниже, приводятся для домена 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.
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)