Расширение последнего руководства по Let’s Encrypt относительно бесплатных сертификатов SSL/TLS, в этой статье мы собираемся продемонстрировать, как получить и установить бесплатные сертификаты SSL/TLS, выданные Центром сертификации Let’s Encrypt для веб-сервера Apache на дистрибутивах CentOS/RHEL 7/6 и Fedora тоже.
Если вы хотите установить Let’s Encrypt для Apache на Debian и Ubuntu, следуйте этому руководству ниже:
Установка Let’s Encrypt для защиты Apache на Debian и Ubuntu
Тестирование примерной среды

Требования
- A registered domain name with valid
A
records to point back to your server public IP Address. - Установленный сервер Apache с включенным модулем SSL и виртуальное хостингом, в случае, если вы хостите несколько доменов или поддоменов.
Шаг 1: Установка веб-сервера Apache
1. Если еще не установлен, демон httpd может быть установлен, выполнив следующую команду:
# yum install httpd
2. Для того чтобы программа Let’s Encrypt работала с Apache, убедитесь, что установлен модуль SSL/TLS, выполнив следующую команду:
# yum -y install mod_ssl
3. Наконец, запустите сервер Apache следующей командой:
# systemctl start httpd.service [On RHEL/CentOS 7] # service httpd start [On RHEL/CentOS 6]
Шаг 2: Установка сертификата SSL Let’s Encrypt
4. Самый простой способ установки клиента Let’s Encrypt – клонировать репозиторий GitHub на вашем файловом хранилище. Чтобы установить git на вашу систему, вы должны включить репозитории Epel следующей командой.
# yum install epel-release
5. Как только репозитории Epel добавлены в вашу систему, перейдите к установке клиента git, выполнив следующую команду:
# yum install git
6. Теперь, после того как вы установили все необходимые зависимости для работы с Let’s Encrypt, перейдите в каталог /usr/local/
и начните загрузку клиента Let’s Encrypt из его официального репозитория GitHub следующей командой:
# cd /usr/local/ # git clone https://github.com/letsencrypt/letsencrypt
Шаг 3: Получение бесплатного SSL-сертификата Let’s Encrypt для Apache
7. Процесс получения бесплатного сертификата Let’s Encrypt для Apache автоматизирован для CentOS/RHEL благодаря плагину apache.
Давайте запустим команду скрипта Let’s Encrypt, чтобы получить SSL-сертификат. Перейдите в каталог установки Let’s Encrypt из /usr/local/letsencrypt
и выполните команду letsencrypt-auto
, указав опцию --apache
и флаг -d
для каждого поддомена, для которого вам нужен сертификат.
# cd /usr/local/letsencrypt # ./letsencrypt-auto --apache -d your_domain.tld

8. Укажите адрес электронной почты, который будет использоваться Let’s Encrypt для восстановления вашего потерянного ключа или для срочных уведомлений, и нажмите Enter, чтобы продолжить.

9. Согласитесь с условиями лицензии, нажав клавишу Enter.

10. По умолчанию на CentOS/RHEL сервер Apache не использует концепцию разделения каталогов для активированных хостов от доступных (неактивных) хостов, как это делают дистрибутивы на основе Debian.
Также виртуальное хостинг отключен по умолчанию. В конфигурационном файле SSL отсутствует выражение Apache, которое указывает имя сервера (ServerName).
Чтобы активировать эту директиву, Let’s Encrypt предложит вам выбрать виртуальный хост. Поскольку она не находит доступного Vhost, выберите файл ssl.conf
для автоматической модификации клиентом Let’s Encrypt и нажмите Enter, чтобы продолжить.

11. Затем выберите Easy метод для запросов HTTP и нажмите Enter, чтобы продолжить.

12. Наконец, если все прошло гладко, на экране должно появиться сообщение с поздравлением. Нажмите Enter, чтобы завершить команду.

Вот и все! Вы успешно выпустили SSL/TLS сертификат для вашего домена. Теперь вы можете начать просматривать ваш сайт, используя протокол HTTPS.
Шаг 4: Проверка бесплатного шифрования Let’s Encrypt на домене
13. Чтобы проверить правильность работы вашего домена при установке SSL/TLS, перейдите по ссылке ниже и протестируйте ваш сертификат на вашем домене.
https://www.ssllabs.com/ssltest/analyze.html

14. Если вы получите серию отчетов о уязвимости вашего домена в проведенных тестах, то вам необходимо немедленно устранить эти уязвимости.
Общий рейтинг класса C делает ваш домен очень небезопасным. Чтобы исправить эти проблемы безопасности, откройте файл конфигурации Apache SSL и внесите следующие изменения:
# vi /etc/httpd/conf.d/ssl.conf
Найдите строку с оператором SSLProtocol
и добавьте -SSLv3
в конце строки.

Глубже в файле найдите и закомментируйте строку с SSLCipherSuite
, поставив перед ней #
, а под этой строкой добавьте следующее содержимое:
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLHonorCipherOrder on SSLOptions +StrictRequire

15. После того, как вы внесли все вышеуказанные изменения, сохраните и закройте файл, затем перезапустите демон Apache, чтобы применить изменения.
# systemctl restart httpd.service [On RHEL/CentOS 7] # service httpd restart [On RHEL/CentOS 6]
16. Теперь снова проверьте статус шифрования вашего домена, посетив ту же ссылку, что и ранее. Для повторного тестирования нажмите ссылку Очистить кэш на веб-сайте.
https://www.ssllabs.com/ssltest/analyze.html

Теперь вы должны получить общий рейтинг класса A, что означает, что ваш домен очень хорошо защищен.
Шаг 4: Автоматическое продление сертификатов Let’s Encrypt на Apache
17. Эта бета-версия программного обеспечения Let’s Encrypt выдает сертификаты с сроком действия после 90 дней. Для продления SSL-сертификата вы должны повторно выполнить команду letsencrypt-auto
до истечения срока действия, с теми же параметрами и флагами, использованными для получения исходного сертификата.
Приведен пример того, как вручную продлить сертификат.
# cd /usr/local/letsencrypt # ./letsencrypt-auto certonly --apache --renew-by-default -d your_domain.tld
18. Чтобы автоматизировать этот процесс, создайте следующий скрипт bash, предоставленный на github erikaheidi, в каталоге /usr/local/bin/
со следующим содержимым. (скрипт слегка изменен для отражения каталога установки letsencrypt).
# vi /usr/local/bin/le-renew-centos
Добавьте следующее содержимое в файл le-renew-centos
:
!/bin/bash domain=$1 le_path='/usr/local/letsencrypt' le_conf='/etc/letsencrypt' exp_limit=30; get_domain_list(){ certdomain=$1 config_file="$le_conf/renewal/$certdomain.conf" if [ ! -f $config_file ] ; then echo "[ERROR] The config file for the certificate $certdomain was not found." exit 1; fi domains=$(grep --only-matching --perl-regex "(?<=domains \= ).*" "${config_file}") last_char=$(echo "${domains}" | awk '{print substr($0,length,1)}') if [ "${last_char}" = "," ]; then domains=$(echo "${domains}" |awk '{print substr($0, 1, length-1)}') fi echo $domains; } if [ -z "$domain" ] ; then echo "[ERROR] you must provide the domain name for the certificate renewal." exit 1; fi cert_file="/etc/letsencrypt/live/$domain/fullchain.pem" if [ ! -f $cert_file ]; then echo "[ERROR] certificate file not found for domain $domain." exit 1; fi exp=$(date -d "`openssl x509 -in $cert_file -text -noout|grep "Not After"|cut -c 25-`" +%s) datenow=$(date -d "now" +%s) days_exp=$(echo \( $exp - $datenow \) / 86400 |bc) echo "Checking expiration date for $domain..." if [ "$days_exp" -gt "$exp_limit" ] ; then echo "The certificate is up to date, no need for renewal ($days_exp days left)." exit 0; else echo "The certificate for $domain is about to expire soon. Starting renewal request..." domain_list=$( get_domain_list $domain ) "$le_path"/letsencrypt-auto certonly --apache --renew-by-default --domains "${domain_list}" echo "Restarting Apache..." /usr/bin/systemctl restart httpd echo "Renewal process finished for domain $domain" exit 0; fi
19. Предоставьте разрешение на выполнение скрипта, установите пакет bc и запустите скрипт для тестирования. Используйте свое доменное имя в качестве параметра положения для скрипта. Используйте следующие команды для выполнения этого шага:
# yum install bc # chmod +x /usr/local/bin/le-renew-centos # /usr/local/bin/le-renew-centos your_domain.tld
20. Наконец, используя планировщик Linux, добавьте новую задачу cron для запуска скрипта каждые два месяца, чтобы обновлять ваш сертификат до даты его истечения.
# crontab -e
Добавьте следующую строку в конец файла.
0 1 1 */2 * /usr/local/bin/le-renew-centos your_domain.tld >> /var/log/your_domain.tld-renew.log 2>&1
Вот и все! Ваш сервер Apache, работающий на основе системы CentOS/RHEL, теперь обслуживает контент SSL с использованием бесплатного сертификата Let’s Encrypt SSL
Source:
https://www.tecmint.com/install-lets-encrypt-ssl-certificate-to-secure-apache-on-rhel-centos/