Let’s Encrypt – некоммерческий удостоверяющий центр, который предоставляет бесплатные X.509 сертификаты для TLS шифрования с помощью автоматизированного процесса, направленного на замену текущего сложного процесса ручного создания, проверки, подписи, установки и обновления сертификатов для защищённых веб-сайтов. Недавно Let’s Encrypt представил Wildcard-сертификат для вашего домена, теперь вы можете использовать ssl без подстановочных знаков для своего домена и для нескольких поддоменов только с одним SSL-сертификатом.
Это руководство будет работать с дистрибутивами Linux, такими как CentOS, Ubuntu, Debian.
Установка выполнена на примере ОС CentOS, для установки git в ОС Ubuntu, Debian, необходимо использовать пакетные менеджеры apt-get, вместо yum.
- Устанавливаем скрипт acme.sh:
cd /root
yum -y install socat git
git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install
После установки будет создано задание в cron для автоматического продления сертификата.
- Подаем запрос на выпуск:
bash acme.sh --issue -d mecmep.site -d *.mecmep.site --dns --force --yes-I-know-dns-manual-mode-enough-go-ahead-please
Вместо mecmep.site необходимо указать свой домен.
- Скрипт сгенерирует 2 TXT записи которые нужно добавить в панель DNS:
[Mon Apr 13 14:06:52 MSK 2020] Domain: '_acme-challenge.mecmep.site'
[Mon Apr 13 14:06:52 MSK 2020] TXT value: 'lGcZEqos8Ki_4Yl_MvTC8OF54Ixjkp_SHKLqZ7ba7G8'
...
[Mon Apr 13 14:06:52 MSK 2020] Domain: '_acme-challenge.mecmep.site'
[Mon Apr 13 14:06:52 MSK 2020] TXT value: 'GfIz0ovmKkHmwN1BV57Vc2IwZeBXPCY5s2M24VWQN3I'
При добавлении записи, в конце имени записи следует добавить точку. Например:
TXT record _acme-challenge.mecmep.site.
value : “lGcZEqos8Ki_4Yl_MvTC8OF54Ixjkp_SHKLqZ7ba7G8”
TXT record _acme-challenge.mecmep.site.
value : “GfIz0ovmKkHmwN1BV57Vc2IwZeBXPCY5s2M24VWQN3I”
- Проверяем обновились ли записи в DNS:
dig txt +short _acme-challenge.mecmep.site
"GfIz0ovmKkHmwN1BV57Vc2IwZeBXPCY5s2M24VWQN3I"
"lGcZEqos8Ki_4Yl_MvTC8OF54Ixjkp_SHKLqZ7ba7G8"
- После обновления DNS возобновляем выдачу сертификата:
bash acme.sh --renew -d mecmep.site -d *.mecmep.site --dns --force --yes-I-know-dns-manual-mode-enough-go-ahead-please
[Mon Apr 13 14:16:47 MSK 2020] Renew: 'mecmep.site'
[Mon Apr 13 14:16:48 MSK 2020] Multi domain='DNS:mecmep.site,DNS:*.mecmep.site'
[Mon Apr 13 14:16:49 MSK 2020] Getting domain auth token for each domain
[Mon Apr 13 14:16:49 MSK 2020] Verifying: mecmep.site
[Mon Apr 13 14:16:53 MSK 2020] Success
[Mon Apr 13 14:16:53 MSK 2020] Verifying: *.mecmep.site
[Mon Apr 13 14:16:57 MSK 2020] Success
[Mon Apr 13 14:16:57 MSK 2020] Verify finished, start to sign.
[Mon Apr 13 14:16:57 MSK 2020] Lets finalize the order, Le_OrderFinalize: https://acme-v02.api.letsencrypt.org/acme/finalize/83278451/2986784558
[Mon Apr 13 14:16:58 MSK 2020] Download cert, Le_LinkCert: https://acme-v02.api.letsencrypt.org/acme/cert/04445ffc3799e6e4ab158437a6730fb44031
[Mon Apr 13 14:16:59 MSK 2020] Cert success.
-----BEGIN CERTIFICATE-----
MIIFXTCCBEWgAwIBAgISBERf/DeZ5uSrFYQ3pnMPtEAxMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDA0MTMxMDE2NThaFw0y
MDA3MTIxMDE2NThaMBYxFDASBgNVBAMTC21lY21lcC5zaXRlMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnF3K+VKC1F1/UBYKdjzzE0QRNa0Du7HzOcuZ
nMOT1TTpsiKIMmwHJMJ9rk1cjn+gWdy+kRxWpFz1giX/tO98GGOU5BvHHEsVW4vN
8JWkWfIA0YJAEC0vk4iOrUv+HUfjmeHQNKawqKqOsnMAAAFxc0G0qQAABAMASDBG
AiEAslEjKLDqUWZ6kX/QDAkFsZ6zbS/qg2zh3Q3T6duingACIQDY8LijAUZ+Yvfz
olc1F1Y08u3mhbKv1ykI4wMJ5X3dxAB1ALIeBcyLos2KIE6HZvkruYolIGdr2vpw
57JJUy3vi5BeAAABcXNBtpYAAAQDAEYwRAIgJEGmMpNk7pRcLwhcmGWIlkJODATc
LDKll/pQ7URhMikCIBo2BVWheYL2XgAuHKNNgPic4j5gAmVqBWF9riNKGyH1MA0G
CSqGSIb3DQEBCwUAA4IBAQAUwvSV8tNLzrO1/ghDU26y5CNszRouyv8RpMOq1zmO
h6p9UzZlmWULtBQiObTcZAqb3CVsm6F3fU9CbX80uB3yAE1vqjMCkcadIuyAGL+R
EfBG2fQ8WGTRfTylljqz0ctfet/2kWQvWjAtS8P+DeZVbcbO6ubKtHw8SF1bw/v9
s3D13jnxnNJn979+bTQUtVZ8eCcctJfJNHKoe54gC5lF2UlHJTy2SXHtQlG5kw9i
7z/Ag01qItgUBqdKeBZc+tLwfZhXlR46sHn3PTMlPwzuDiEu8TFQKcx6zewzOz1U
tIs5N7XCrdnZsJy0FLG6wJSyszDTldeCLwdWgxPOAEcn
-----END CERTIFICATE-----
[Mon Apr 13 14:16:59 MSK 2020] Your cert is in /root/.acme.sh/mecmep.site/mecmep.site.cer
[Mon Apr 13 14:16:59 MSK 2020] Your cert key is in /root/.acme.sh/mecmep.site/mecmep.site.key
[Mon Apr 13 14:16:59 MSK 2020] The intermediate CA cert is in /root/.acme.sh/mecmep.site/ca.cer
[Mon Apr 13 14:16:59 MSK 2020] And the full chain certs is there: /root/.acme.sh/mecmep.site/fullchain.cer
Будут выданы сертификаты, ключ и цепочка которые нужно добавить в конфигурационные файлы apache и nginx удалив уже существующие:
Apache:
/home/admin/conf/web/mecmep.site.apache2.ssl.conf, где mecmep.site имя домена
SSLCertificateFile /root/.acme.sh/mecmep.site/mecmep.site.cer
SSLCertificateKeyFile /root/.acme.sh/mecmep.site/mecmep.site.key
SSLCertificateChainFile /root/.acme.sh/mecmep.site/fullchain.cer
Nginx:
/home/admin/conf/web/mecmep.site.nginx.ssl.conf, где mecmep.site имя домена
ssl_certificate /root/.acme.sh/mecmep.site/fullchain.cer;
ssl_certificate_key /root/.acme.sh/mecmep.site/mecmep.site.key;
- Перезапускаем apache и nginx:
# systemctl restart apache2
# systemctl restart nginx
Чтобы обновить сертификаты, вам нужно выполнить эту команду через 90 дней, обновите запись TXT dns, как указано ниже:
acme.sh --issue -d mecmep.site -d *.mecmep.site --dns --force --yes-I-know-dns-manual-mode-enough-go-ahead-please
Где mecmep.site имя вашего домена.
Автоматическое обновление let’s encrypt certs с помощью задания Cron, добавьте этот ежедневный cron для проверки автообновления:
0 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
Проверить корректность установки сертификата Вы можете с помощью данного сервиса.
Если у Вас возникли трудности в настройке или появились дополнительные вопросы, вы всегда можете обращаться в нашу службу поддержки через систему тикетов.