Let’s Encrypt – некоммерческий удостоверяющий центр, который предоставляет бесплатные X.509 сертификаты для TLS шифрования с помощью автоматизированного процесса, направленного на замену текущего сложного процесса ручного создания, проверки, подписи, установки и обновления сертификатов для защищённых веб-сайтов. Недавно Let’s Encrypt представил Wildcard-сертификат для вашего домена, теперь вы можете использовать ssl без подстановочных знаков для своего домена и для нескольких поддоменов только с одним SSL-сертификатом.

Это руководство будет работать с дистрибутивами Linux, такими как CentOS, Ubuntu, Debian.
Установка выполнена на примере ОС Ubuntu, для установки git в ОС CentOS, необходимо использовать пакетные менеджеры yum, вместо apt-get.

  • Устанавливаем скрипт acme.sh:
cd /root  
sudo apt-get install socat git  
git clone https://github.com/Neilpang/acme.sh.git  
cd ./acme.sh  
./acme.sh --install

После установки будет создано задание в cron для автоматического продления сертификата.

[Tue Jun  8 14:22:33 MSK 2021] Installing cron job
6 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null  
[Tue Jun  8 14:22:33 MSK 2021] Good, bash is found, so change the shebang to use bash as preferred.
[Tue Jun  8 14:22:34 MSK 2021] OK


  • Подаем запрос на выпуск:
bash acme.sh --issue -d testfrnx.ru -d  *.testfrnx.ru --dns --force --yes-I-know-dns-manual-mode-enough-go-ahead-please  

Вместо testfrnx.ru необходимо указать свой домен.

  • Скрипт сгенерирует 2 TXT записи которые нужно добавить в панель DNS:
[Tue Jun  8 14:23:11 MSK 2021] Domain: '_acme-challenge.testfrnx.ru'
[Tue Jun  8 14:23:11 MSK 2021] TXT value: 'GCgAc4Q1Ur4Iv5A-SFhaZ6as-IyuIbfcm7FnUOq3Qxs'
...
[Tue Jun  8 14:23:12 MSK 2021] Domain: '_acme-challenge.testfrnx.ru'
[Tue Jun  8 14:23:12 MSK 2021] TXT value: 'dA6AcK4oR2VOIuD_i7zdNn6RZXXBJORpZWlhDOmk96A'

При добавлении записи, в конце имени записи следует добавить точку. Например:

TXT record _acme-challenge.testfrnx.ru.  
value : “dA6AcK4oR2VOIuD_i7zdNn6RZXXBJORpZWlhDOmk96A”  
TXT record _acme-challenge.testfrnx.ru.  
value : “GCgAc4Q1Ur4Iv5A-SFhaZ6as-IyuIbfcm7FnUOq3Qxs”  

file

  • Проверяем обновились ли записи в DNS:
dig txt +short _acme-challenge.testfrnx.ru  
"GCgAc4Q1Ur4Iv5A-SFhaZ6as-IyuIbfcm7FnUOq3Qxs"
"dA6AcK4oR2VOIuD_i7zdNn6RZXXBJORpZWlhDOmk96A"
  • После обновления DNS возобновляем выдачу сертификата:
bash acme.sh --renew -d testfrnx.ru -d  *.testfrnx.ru --dns --force --yes-I-know-dns-manual-mode-enough-go-ahead-please  
[Tue Jun  8 15:26:45 MSK 2021] Renew: 'testfrnx.ru'
[Tue Jun  8 15:26:46 MSK 2021] Using CA: https://acme-v02.api.letsencrypt.org/directory
[Tue Jun  8 15:26:46 MSK 2021] Multi domain='DNS:testfrnx.ru,DNS:*.testfrnx.ru'
[Tue Jun  8 15:26:46 MSK 2021] Getting domain auth token for each domain
[Tue Jun  8 15:26:46 MSK 2021] Verifying: testfrnx.ru
[Tue Jun  8 15:26:50 MSK 2021] Success
[Tue Jun  8 15:26:50 MSK 2021] Verifying: *.testfrnx.ru
[Tue Jun  8 15:26:54 MSK 2021] Success
[Tue Jun  8 15:26:54 MSK 2021] Verify finished, start to sign.
[Tue Jun  8 15:26:54 MSK 2021] Lets finalize the order.
[Tue Jun  8 15:26:54 MSK 2021] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/126277849/10255533047'
[Tue Jun  8 15:26:55 MSK 2021] Downloading cert.
[Tue Jun  8 15:26:55 MSK 2021] Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/03b7103ef19e6ed4f7ed37a88639dfc16fda'
[Tue Jun  8 15:26:56 MSK 2021] Cert success.
-----BEGIN CERTIFICATE-----
MIIFKzCCBBOgAwIBAgISA7cQPvGebtT37TeohjnfwW/aMA0GCSqGSIb3DQEBCwUA  
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD  
EwJSMzAeFw0yMTA2MDgxMTI2NTVaFw0yMTA5MDYxMTI2NTVaMBYxFDASBgNVBAMT  
C3Rlc3Rmcm54LnJ1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0CVy  
hiWdP/ctjDvgdrtpqj7TWhonFK/0Kyp/EHh5QyjU/9eqh/3XzeLN404Qw1wzWA2M  
3PUMUtWHaWoQNL97cWT493BkC8VmfLIFCdxWl8YPQpFg1ue6P+ELveYZKZQdOJ9e  
jviO/LKv8IioXboLoI2BmtA8aDV1A/bUKPces3jAVdOD/YKRGbyHY0rcqsJotmC4  
Uf5qRmPpxM9Vz9QwSTsj5/XlSQgJsX4VTozoU2i4bjH54mQYqr2t4lsklCsJx0BR  
IofOYG3mYoWTdJFSq6aufzOIIax46KZItcGoxbB/xOvLTMancJrHgutyvWFcMHod  
3wUUjqoxMM3zLJuaOwIDAQABo4ICVTCCAlEwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud  
JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQW  
BBQ13H1ptA55SgCPtLPn7WPw5dNzfjAfBgNVHSMEGDAWgBQULrMXt1hWy65QCUDm  
H6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9yMy5v  
LmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iub3JnLzAl  
OMRYIhVy2z1EAP/fPNiSPQ6v2wB2AG9Tdqwx8DEZ2JkApFEV/3cVHBHZAsEAKQaN  
sgiaN9kTAAABeeuXDPkAAAQDAEcwRQIhAL0fmCcsEIIB7BZuX1fy0Y7c6XkaoaE2  
MmWcI75fbQV6AiA+gD9kPSX5WFu0aCRSRj2cBnyDzr/WBUvw/xLQ3UF2bzANBgkq  
hkiG9w0BAQsFAAOCAQEAIfPpNQGil4ebxGfv6yGK8bXzg7nHnUx7PQ//Bsz47OXt  
fC5URvam9+8lhzRycD5RCJbzhvW8kqNEx6xOavsMlnpkVfiQYqVCTPxGitsw4ETF  
iYHT6s1xCLqek/QI9oy+A0QIdmaI3tEMiDmtK5pbnATWlmKUP6eUErZZTuaioE4m  
vTYOXId0nrMeZSa/N62mSJfpuQBfk3K1xiYVGxci6WwbB4PmfZX+hOQNAFn+zoWQ  
Rl3kO4CDbCxsaXCzxz1BW65arox2vkAlXVHznLxzTBRa5ysJi6U6xWGg8VpUsPwF  
1O/2l90+LYCsQ9Ib+SbsoD1TTkW6l/sKotVE43GTZQ==  
-----END CERTIFICATE-----
[Tue Jun  8 15:26:56 MSK 2021] Your cert is in  /root/.acme.sh/testfrnx.ru/testfrnx.ru.cer 
[Tue Jun  8 15:26:56 MSK 2021] Your cert key is in  /root/.acme.sh/testfrnx.ru/testfrnx.ru.key 
[Tue Jun  8 15:26:56 MSK 2021] The intermediate CA cert is in  /root/.acme.sh/testfrnx.ru/ca.cer 
[Tue Jun  8 15:26:56 MSK 2021] And the full chain certs is there:  /root/.acme.sh/testfrnx.ru/fullchain.cer 


Будут выданы сертификаты, ключ и цепочка которые нужно добавить в конфигурационные файлы apache и nginx удалив уже существующие:
Apache:

/home/admin/conf/web/testfrnx.ru.apache2.ssl.conf, где testfrnx.ru имя домена
    SSLCertificateFile /root/.acme.sh/testfrnx.ru/testfrnx.ru.cer
    SSLCertificateKeyFile /root/.acme.sh/testfrnx.ru/testfrnx.ru.key
    SSLCertificateChainFile /root/.acme.sh/testfrnx.ru/fullchain.cer

Nginx:

/home/admin/conf/web/testfrnx.ru.nginx.ssl.conf, где testfrnx.ru имя домена
    ssl_certificate      /root/.acme.sh/testfrnx.ru/fullchain.cer;
    ssl_certificate_key  /root/.acme.sh/testfrnx.ru/testfrnx.ru.key;
  • Перезапускаем apache и nginx:
# service nginx restart
# service apache2 restart

Чтобы обновить сертификаты, вам нужно выполнить эту команду через 90 дней, обновите запись TXT dns, как указано ниже:

acme.sh --issue -d testfrnx.ru -d *.testfrnx.ru --dns --force --yes-I-know-dns-manual-mode-enough-go-ahead-please  

Где testfrnx.ru имя вашего домена.

file

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

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

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

file


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

Обновлено 26 октября 2024 г.