Страницы

Поиск по вопросам

суббота, 22 июня 2019 г.

как воспользоваться сертификатами от проекта let's encrypt?

с 3 декабря 2015 года проект let's encrypt перешёл в режим "public beta".
как воспользоваться сертификатами, выдаваемыми этим проектом?


Ответ

можно воспользоваться любой из реализаций клиентов, работающих с системой let's encrypt
например, есть пошаговая инструкция для официального клиента.

но мне понравился минималистичный shell-скрипт из репозитория lukas2511, который не требует ни повышенных привилегий для своей работы, ни установки дополнительных программ/пакетов (всё необходимое обычно уже имеется в любой «серверной» установке: bash, openssl, curl и утилиты из coreutils).
как я настроил этот клиент
для пущей безопасности я создал пользователя letsencrypt (без пароля):
$ sudo adduser --disabled-password letsencrypt открыл сеанс оболочки от имени этого пользователя:
$ sudo -u letsencrypt -i letsencrypt@host:~$ склонировал репозиторий со скриптом и «перешёл» в созданный каталог:
$ git clone https://github.com/lukas2511/letsencrypt.sh.git $ cd letsencrypt.sh
если git не установлен, можно скачать архив с файлами и распаковать. скопировал образцовый конфиг:
$ cp config.sh.example config.sh создал файл domains.txt для домена (мне требуется, чтобы в сертификате были имена и с www и без):
domain.tld www.domain.tld
если требуются на этой же машине и сертификаты для других доменов, то можно добавить ещё строк в этот файл, по строке для каждого сертификата. создал каталог для аутентификации
$ mkdir .acme-challenges теперь на время надо вернуться к настройкам http-сервера. можно завершить сеанс пользователя letsencrypt, а лучше открыть другое окно с оболочкой более привилегированного пользователя.
в настройках http-сервера надо прописать alias для /.well-known/acme-challenge, чтобы он указывал на созданный в предыдущем пункте каталог. ориентировочно это будет /home/letsencrypt/letsencrypt.sh/.acme-challenges
для nginx в секцию server надо добавить location
location /.well-known/acme-challenge { alias /home/letsencrypt/letsencrypt.sh/.acme-challenges; } для apache в секцию virtualhost надо добавить строку:
alias /.well-known/acme-challenge /home/letsencrypt/letsencrypt.sh/.acme-challenges
это надо проделать для всех доменов (точнее, отдельных строк в созданном вами файле domains.txt).
http-сервер после этого надо перезапустить. теперь можно запускать скрипт для генерации сертификата(-ов). вернитесь к окну, где открыта оболочка, запущенная от имени пользователя letsencrypt (или запустите новую и перейдите в каталог со скриптом):
$ ./letsencrypt.sh -c
если всё пойдёт нормально, последней строкой выдачи будет:
+ Done! сертификат и ключ для домена сгенерированы и лежат в каталоге /home/letsencrypt/letsencrypt.sh/certs/domain.tld
cert.pem privkey.pem
в принципе, это symlink-и на актуальные версии этих файлов, которые лежат в том же каталоге и в названии которых присутствует метка времени. типа cert-1453143084.pem теперь можно прописывать эти файлы в настройках http-сервера:
файл с сертификатом: /home/letsencrypt/letsencrypt.sh/certs/domain.tld/cert.pem файл с ключом: /home/letsencrypt/letsencrypt.sh/certs/domain.tld/privkey.pem обновление сертификатов производится точно так же, как и генерация: от имени пользователя letsencrypt перейдите в каталог со скриптом и запустите скрипт с тем же самым параметром — ./letsencrypt.sh -c
можно создать соответствующую cron-задачу, которая через пару месяцев (сертификаты генерируются на 90 дней) выполнит скрипт (от имени этого пользователя и в нужном каталоге) и перезапустит http-сервер

Комментариев нет:

Отправить комментарий