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”  

file

  • Проверяем обновились ли записи в 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 имя вашего домена.

file

Автоматическое обновление let’s encrypt certs с помощью задания Cron, добавьте этот ежедневный cron для проверки автообновления:

0 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null  

Проверить корректность установки сертификата Вы можете с помощью данного сервиса.

file


Если у Вас возникли трудности в настройке или появились дополнительные вопросы, вы всегда можете обращаться в нашу службу поддержки через систему тикетов.

Обновлено 8 июня 2021 г.