Найти в Дзене

Установка бесплатного SSL-сертификата на CentOS

Установка сертификата Для начала следует установить certbot. Для этого выполняем команду "yum install certbot". Далее генерируем сертификат командой "certbot certonly --webroot --agree-tos --email myemail@mydomain.ru -w /home/bitrix/www/ -d mydomain.ru -d www.mydomain.ru", где заменяем email и домены на свои и указываем свой путь к корню сайта(там будут созданы временные файлы для проверки). При успешной генерации будет сообщение вида: IMPORTANT NOTES:
- If you lose your account credentials, you can recover through
   e-mails sent to myemail@mydomain.ru
- Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/mydomain.ru/fullchain.pem. Your
   cert will expire on 2021-06-10. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
- Your account credentials have been saved in your Let's Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration
Оглавление
Фото из свободных источников интернета
Фото из свободных источников интернета

Установка сертификата

Для начала следует установить certbot. Для этого выполняем команду "yum install certbot".

Далее генерируем сертификат командой "certbot certonly --webroot --agree-tos --email myemail@mydomain.ru -w /home/bitrix/www/ -d mydomain.ru -d www.mydomain.ru", где заменяем email и домены на свои и указываем свой путь к корню сайта(там будут созданы временные файлы для проверки).

При успешной генерации будет сообщение вида:
IMPORTANT NOTES:
- If you lose your account credentials, you can recover through
   e-mails sent to myemail@mydomain.ru
- Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/mydomain.ru/fullchain.pem. Your
   cert will expire on 2021-06-10. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
- Your account credentials have been saved in your Let's Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Let's
   Encrypt so making regular backups of this folder is ideal.
- If like Let's Encrypt, please consider supporting our work by:


   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Если не получилось создать, тогда надо искать проблему, например что-то не так с DNS записями, или нет доступа из вне к разделу /.well-known/acme-challenge/ который создается утилитой.

Для решения второго варианта можно попробовать прописать правила в Nginx вида:
location /.well-known/acme-challenge/ {
root /home/bitrix/www;
}
или для строгости:
location ^~ /.well-known/acme-challenge/ {
root /home/bitrix/www;
}

Если сертификат создан успешно, то необходимо добавить его в соотвествующий серверный блок Nginx прописи строки:

ssl_certificate         /etc/letsencrypt/live/mydomain.ru/fullchain.pem;
ssl_certificate_key     /etc/letsencrypt/live/mydomain.ru/privkey.pem;

Следует учитывать что https работает на 443 порте и параметр listen должен иметь тоже значение и ssl. Пример:
listen 443 ssl;

Далее проверяет Nginx командой "nginx -t" и если все нормально перезагружаем его командой "nginx -s reload".

Автоматическое обновление сертификата

Сертификат выдается на три месяца и поэтому его переодически надо обновлять.

Автоматически сделать это можно добавив запись в /etc/crontab вида:

0 4 * * * root /usr/bin/certbot renew --quiet --agree-tos --post-hook "systemctl reload nginx.service"

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

Есть другой способ, который я обычно использую, это при помощи systemd.

Для этого создаем конфигурацию сервиса по пути /etc/systemd/system/certbot.service с содержимым:

И конфигурацию таймера по пути /etc/systemd/system/certbot.timer с содержимым:

Активируем таймер командой "systemctl enable certbot.timer" и запускаем командой "systemctl start certbot.timer".

Проверка сертификата

Мне нравиться проверять сервисом: https://www.ssllabs.com/ssltest/. Тут можно понять на сколько хорошо настроен сертификат и что примерно можно поправить.

Улучшение оценки

Для улучшения оценки можно сгенерировать ключ Диффи — Хеллмана командой "openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048" и подключить его в Nginx строкой "ssl_dhparam /etc/nginx/ssl/dhparam.pem;".

Далее прописать только необходимые протоколы например "ssl_protocols TLSv1.2 TLSv1.3;" и шифры "ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;".

Если используете BitrixVM то там это уже есть в файле /etc/nginx/bx/conf/ssl.conf