После установки NextCloud, потребовалось иметь доступ к нему с интернета. Для этого было нужно максимально обезопасить соединение. Одним из пунктов был установка ssl сертификата.
Установка зависимых модулей
Для установки сертификата нам необходим certbot и наличие EPEL репозитория, так как оно отключено в CentOS 7 по умолчанию. Также требуется mod_ssl, чтобы Apache мог распознавать шифрование.
Устанавливаем модули:
yum install epel-release mod_ssl
Приготовления завершены. Теперь готовы к установке certbot.
Установка клиента Let’s Encrypt
Установите certbot из EPEL хранилища выполнив команду:
yum install python-certbot-apache
Теперь сertbot установлен и готов к использованию.
Настройка SSL сертификата
Certbot — инструмент для управления SSL сертификатами, также он может генерировать новые сертификаты для необходимого домена.
Для примера создаем сертификат для admincorner.ru:
certbot --apache -d admincorner.ru
Если вы хотите сгенерировать несколько SSL сертификатов для нескольких доменов и субдоменов:
certbot --apache -d admincorner.ru -d www.admincorner.ru
ВАЖНО! Первый домен должен быть базовым доменом, в этом примере это admincorner.ru.
В процессе установки будет представлено пошаговое руководство по настройке сертификата. Вы сможете настроить использование HTTPS или оставить HTTP в качестве протокола по умолчанию, также вам будет необходимо предоставить адрес вашей электронной почты в целях безопасности.
Как только установка будет завершена, вы увидите следующее сообщение:
IMPORTANT NOTES:
— If you lose your account credentials, you can recover through
e-mails sent to user@admincorner.ru.
— Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/admincorner.ru/fullchain.pem. Your cert
will expire on 2016-04-21. 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 you 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
Настройка автообновления SSL сертификата
Сертификат Let’s Encrypt действителен в течении 90 дней, но желательно обновлять его каждые 60 дней для избежания возникновения проблем с безопасностью. Сделать это вам поможет сам certbot, с помощью команды renew. После выполнения команды он проверит время до истечения срока действия сертификата.
Обновляем сертификат:
certbot renew
Если установленный сертификат еще действителен, certbot проверит только дату истечения срока годности:
Processing /etc/letsencrypt/renewal/admincorner.ru.conf
The following certs are not due for renewal yet:
/etc/letsencrypt/live/admincorner.ru/fullchain.pem (skipped)
No renewals were attempted.
Для автоматизации данного процесса, вы можете настроить cronjob. Откройте crontab:
crontab -e
Эта задача может быть записана в расписание на каждую полночь понедельника.
0 0 * * 1 /usr/bin/certbot renew >> /var/log/sslrenew.log
Журнал выполнения задачи будет выведен в файл /var/log/sslrenew.log.
Заключение
Только что мы защитили ваш веб-сервер Apache подключив бесплатный SSL сертификат! С этого момента весь трафик между сервером и клиентом будет шифроваться. Вы можете быть уверены, что никто не сможет перехватить сообщения или украсть важную информацию.