Страницы

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

Показаны сообщения с ярлыком letsencrypt. Показать все сообщения
Показаны сообщения с ярлыком letsencrypt. Показать все сообщения

суббота, 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-сервер

среда, 12 июня 2019 г.

Время действия сертификата

Пользуюсь сертификатом от LetsEncrypt, подключил скрипт на автопродление, но вот боюсь, что он не продлится автоматически и на всех сайтах однажды появится ошибка безопасности.
В анализе с помощью sslanalyzer.comodoca.com поле Valid From должно каждый день обновляться (становиться текущей датой) или дата изменится на текущую только когда закончится срок действия сертификата и сработает автопродление?


Ответ

боюсь, что он не продлится автоматически
проконтролируйте. если до даты окончания действия сертификата осталось меньше месяца (только в таком случае letsencrypt согласится перевыпустить сертификат), а то (не знаю что), что вы запускаете для запроса нового сертификата, отработало, но сертификат остался прежним — пора разбираться с этим самым тем (не знаю чем).

ремарка: не имею ни малейшего представления, что это за сайт sslanalyzer.comodoca.com, и какую информацию он предоставляет.
но если речь про две даты: когда сертификат стал/станет действующим (notbefore), и когда сертификат прекратил/прекратит быть действующим (notafter), то они записаны непосредственно в сертификате и, конечно, не меняются.
получаете новый сертификат — у него будут новые даты начала и конца действия.
посмотреть их можно с помощью программы openssl примерно так:
$ openssl x509 -noout -startdate -enddate -in файл.с.сертификатом notBefore=Jun 7 15:26:28 2017 GMT notAfter=Aug 30 15:11:00 2017 GMT
или, скачав сертификат с действующего сервера:
http-сервер, порт 443 (https):
$ : | openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -startdate -enddate notBefore=Jun 7 15:26:28 2017 GMT notAfter=Aug 30 15:11:00 2017 GMT smtp-сервер, порт 25 (smtp, starttls):
$ : | openssl s_client -connect smtp.gmail.com:25 -starttls smtp 2>/dev/null | openssl x509 -noout -startdate -enddate notBefore=Jun 7 15:35:24 2017 GMT notAfter=Aug 30 15:11:00 2017 GMT imap-сервер, порт 143 (imap, starttls):
$ : | openssl s_client -connect imap.yandex.ru:143 -starttls imap 2>/dev/null | openssl x509 -noout -startdate -enddate notBefore=Apr 28 17:54:16 2016 GMT notAfter=Apr 28 17:54:16 2018 GMT imap-сервер, порт 993 (imaps)
$ : | openssl s_client -connect imap.gmail.com:993 2>/dev/null | openssl x509 -noout -startdate -enddate notBefore=Jun 7 15:28:03 2017 GMT notAfter=Aug 30 15:11:00 2017 GMT