Получение сертификата Let’s Encrypt
Ранее мною была подана заявка на участие в тестировании сервиса выдачи бесплатных SSL сертификатов Let’s Encrypt. И вот сегодня, наконец-то пришло письмо о том что я могу принять участие в тестировании и получить сертификат для указанного в заявке домена.
На данный момент процесс закрытого бета-тестирования Let’s Encrypt закончен и любой желающий может создать сертификат для своего сайта.
В этой статье я опишу процесс создания и автоматического продления сертификатов с помощью сервиса Let’s Encrypt. Я использую Nginx на всех своих сайтах, поэтому, инструкция рассчитана под использование именно этого веб-сервера.
Для автоматизации получения сертификата, Let’s Encrypt использует ACME — специальный клиент написанный на Perl. Все действия осуществляются непосредственно через консоль и после получения сертификата, дальнейшее его продление будет проходить полностью в автоматическом режиме.
Для создания сертификатов использовалась виртуальная машина с OS Debian 8.2, но вы можете использовать любой другой Linux дистрибутив по своему усмотрению.
Перед тем как перейти к процессу создания сертификатов Let’s Encrypt, необходимо определится с расположением файлов ACME. Клиент нам понадобится в дальнейшем для продления сертификатов.
В моем случае ACME будет расположен в директории home
:
cd /home
Если следовать официальной инструкции, для загрузки ACME необходимо установить клиент Git:
# apt-get install git
После чего загрузить файлы командой:
# git clone https://github.com/letsencrypt/letsencrypt
# cd letsencrypt
Как альтернативный вариант, я предлагаю просто скачать zip-архив ACME с официального репозитория GitHub.
# wget https://github.com/letsencrypt/letsencrypt/archive/master.zip
Извлекаем архив и переходим в каталог с файлами:
# unzip master.zip
# mv letsencrypt-master letsencrypt
# cd letsencrypt
Для проверки владения доменом, необходимо добавить в настройки виртуального хоста Nginx:
server {
listen 80;
server_name test.codebeer.ru;
root /var/www/test.codebeer.ru;
location '/.well-known/acme-challenge' {
default_type "text/plain";
alias /tmp/letsencrypt-auto';
}
}
Для уже существующего сайта, нужно добавить в секцию server
алиас:
location '/.well-known/acme-challenge' {
default_type "text/plain";
alias /tmp/letsencrypt-auto';
}
Создание сертификата Let’s Encrypt
Есть несколько параметров запуска клиента Let’s Encrypt. Подробнее о каждом из них можно прочитать на странице официальной документации. Чтобы создать сертификат, просто выполните команды ниже:
# export DOMAINS="-d test.codebeer.ru -d www.test.codebeer.ru"
# export DIR=/tmp/letsencrypt-auto
# mkdir -p $DIR
# ./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --webroot-path=$DIR --agree-dev-preview $DOMAINS
Не забудьте заменить названия доменов на свои.
В процессе генерации сертификата Let’s Encrypt необходимо будет указать email:
Enter email address (used for urgent notices and lost key recovery)
Примите условия использования:
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf. You
must agree in order to register with the ACME server at
https://acme-staging.api.letsencrypt.org/directory
Соглашаемся на сохранение вашего адреса в логах Let’s Encrypt:
NOTE: The IP of this machine will be publicly logged as having
requested this certificate. If you're running letsencrypt in manual
mode on a machine that is not your server, please ensure you're okay
with that.
Are you OK with your IP being logged?
Если проверка прошла успешно, то вы увидите следующее сообщение:
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/test.codebeer.ru/fullchain.pem. Your cert
will expire on 2016-03-06. To obtain a new version of the
certificate in the future, simply run Let's Encrypt again.
- If like Let's Encrypt, 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/live/test.codebeer.ru/
Не меняя расположение, вам необходимо указать путь к файлам в настройка Nginx или другого веб-сервера.
Продление сертификата Let’s Encrypt
Все сертификаты Let’s Encrypt имеют срок действия равный 90 дней. Поэтому, обновлять вручную сертификаты каждые 3 месяца не совсем удобно. По словам представителей Let’s Encrypt, время жизни сертификата в будущем может быть уменьшено.
Чтобы автоматизировать процесс продления сертификата, необходимо добавить в cron скрипт:
export DOMAINS="-d test.codebeer.ru -d www.test.codebeer.ru"
export DIR=/tmp/letsencrypt-auto
mkdir -p $DIR
/home/letsencrypt/letsencrypt-auto --renew certonly --server https://acme-v01.api.letsencrypt.org/directory -a webroot --webroot-path=$DIR --agree-dev-preview $DOMAINS
service nginx restart
Комментариев 0