Мой опыт получения сертификата Let’s Encrypt

В последнее время стали часто писать про бесплатные сертификаты от Let’s Encrypt. Но меня эта тема до сего момента обходила стороной. На днях я решил лично все проверить и получить сертификаты для своего домена.

Заходим на страницу проекта и выбираем Get Started. Они рекомендуют использовать Certbot, который можно поставить из бэкпортов (в случае Debian/Raspbian). Я посмотрел его зависимости и решил прибегнуть к альтернативному варианту установки. Выбор пал на GetSSL, который написан на bash.

$ curl --silent https://raw.githubusercontent.com/srvrco/getssl/master/getssl > getssl
$ chmod 700 getssl
$ ./getssl -с mydomain.ru

У меня скрипт ругнулся на отсутствие nslookup, пришлось поставить пакет:

$ sudo apt-get install dnsutils

Запускаем еще раз команду:
./getssl -с mydomain.ru

Редактируем конфигурацию указанного домена в .getssl/mydomain.ru/getssl.cfg:

# Имя для получения тестового сертификата.
# Сертификат будет подписан фейковым CA.
# Можно использовать для тестирования.
#CA="https://acme-staging.api.letsencrypt.org"
# Имя для получения продакшен сертификата.
# Сертификат будет подписан настоящим CA.
CA="https://acme-v01.api.letsencrypt.org"
PRIVATE_KEY_ALG="rsa"
SANS=www.mydomain.ru # Это альтернативное имя
ACL=('/var/www/mydomain.ru/wordpress/.well-known/acme-challenge'
'/var/www/mydomain.ru/wordpress/.well-known/acme-challenge')
RENEW_ALLOW="30"
SERVER_TYPE="https"

Рекомендую сразу создать директорию .well-known относительно documentroot web-проекта, чтобы не запускать скрипт от root. Робот Let’s Encrypt придет запрашивать созданные там файлы по ссылкам. И если он их не получит, то и сертификат не выпишет.

В опции SANS указываются дополнительные (альтернативные) имена, которые будут прописаны в сертификате. В показанной конфигурации сертификат будет выдан для mydomain.ru и www.mydomain.ru. Но имен может быть и больше.

В ACL пишется путь к .well-known относительно корня веб проекта. Причем важен порядок. Первый ACL должен соответствовать mydomain.ru, второй www.mydomain.ru и т.д. В приведенном примере это один web проект, но если имена настроены на разные documentroot, это нужно будет описать в конфигурации.

Теперь еще раз запускаем скрипт:

$ ./getssl mydomain.ru

Если все прошло успешно, в .getssl/mydomain.ru/ будут созданы сертификаты: chain.crt, mydomain.ru.crt, mydomain.ru.key.

Смотрим что мы получили:

$ openssl x509 -in .getssl/mydomain.ru/mydomain.ru.crt -noout -text
------------------------------------------------------------
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3
Validity
Not Before: Aug 12 21:59:00 2016 GMT
Not After : Nov 10 21:59:00 2016 GMT
Subject: CN=mydomain.ru
...
X509v3 Subject Alternative Name:
DNS:mydomain.ru, DNS:www.mydomain.ru

Даты и CN естественно будут отличаться. И как видно, сертификат выписывается всего на 3 месяца. При желании, можно настроить скрипт делать автоматическое обновление сертификата и перезагрузку веб сервера (смотрите официальную документацию и исходный код.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *