Страницы

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

четверг, 9 апреля 2020 г.

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

#apache #nginx #ssl #сертификат #letsencrypt

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

как воспользоваться сертификатами, выдаваемыми этим проектом?
    


Ответы

Ответ 1



можно воспользоваться любой из реализаций клиентов, работающих с системой 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-сервер.

Ответ 2



Центр сертификации Let's Encrypt использует протокол Automated Certificate Management Environment. Получать сертификат лучше с помощью одного из рекомендованных клиентов. Моим выбором стал GetSSL. Это простой bash скрипт, который умеет сам себя обновлять. При работе использует CLI openssl, и значит нет жесткой привязки к версии. GetSSL автоматизирует процесс получения и продления сертификата с помощью нескольких команд. Например, чтобы получить сертификат для домена domain.tld: srv ~ # getssl -c domain.tld creating main config file /root/.getssl/getssl.cfg Making domain directory - /root/.getssl/domain.tld creating domain config file in /root/.getssl/domain.tld/getssl.cfg srv ~ # getssl domain.tld Первая команда добавляет домен в список для получения (выполняется единожды), вторая - для получения сертификата. В этой статье можно подробнее узнать о процессе получения сертификата с помощью GetSSL.

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

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