Бесплатный SSL сертификат Let’s Encrypt для сервера Apache под Centos 6/7
В этой статье рассмотрим инструкцию для администратора VPS или выделенного сервера, работающего под управлением операционных систем Centos версий 6 или 7 и использующего веб-сервер Apache. Наша цель — установить бесплатный SSL-сертификат от Let’s Encrypt и запустить сайт (или несколько сайтов) по протоколу https с указанием «Надежный» в строке браузера.
Итак, шаг первый: Устанавливаем необходимое программное обеспечение.
В большинстве инструкций для NGINX есть указание на то, что необходимо установить среду git и лишь затем устанавливать клиент Let’s Encrypt. Это правильная инструкция, однако для тех, кто работает под операционными системами Centos есть другой вариант — использовать обычный yum и поставить облегченный, но вполне рабочий официальный клиент certbot.
yum install python-certbot-apache
Кроме того, если Apache пока не готов работать с SSL, необходимо установить модуль для него (если модуль уже установлен, вреда команда не нанесет):
yum install epel-release mod_ssl
На этом с установки программного обеспечения всё.
Шаг второй: Запрашиваем SSL-сертификаты для наших доменов.
При этом если доменов несколько, первый по списку будет считаться базовым.
certbot --apache -d example.com -d www.example.com |
В процессе выполнения команды появится окно, где будет запрошен адрес электронной почты для связи в случае возникновения проблем, система задаст вопрос — следует ли разрешать вызывать сайт исключительно через https или можно воспользоваться более мягким вариантом — http + https.
Всё! Сертификат создан и установлен! Теперь переходим к настройкам:
Шаг третий: Настраиваем наш веб-сайт
Важно, чтобы все картинки, все css-файлы, все скрипты грузились только через https. Для этого проверяем все ссылки и везде http заменяем на https.
Шаг четвертый: Настраиваем Apache и проверяем наш сайт
Для этого воспользуемся ссылкой: https://www.ssllabs.com/ssltest/analyze.html
Как правило, при первом тестировании результаты выглядят так:
Проблема в том, что Apache использует алгоритмы шифрования, которые не считаются достаточно надежными. Для того, чтобы это исправить, требуется совсем немного:
В терминале набрать команду
# vi /etc/httpd/conf.d/ssl.conf
После этого найти директиву SSLProtocol и добавить в конце нее -SSLv3
Затем нужно найти строчку с директивой SSLCipherSuite и закомментировать ее (поставить символ # в ее начале).
После того, как изменения внесены (в редакторе vi — нажать клавишу ESC затем ввести :х ) — перезагружаем Apache
Если все сделали правильно, то в открытом окне https://www.ssllabs.com/ssltest/analyze.htmlможно нажать ссылку Clear cache — скорее всего мы получим отличные результаты:
Важно! Сертификаты Let’s Encrypt выдаются только на три месяца! Однако их можно автоматически обновлять.
Для этого обязательно выполняем Шаг пятый: Добавляем команду обновления сертификатов.
Лучше всего эту команду добавить прямо в cron, чтобы она выполнялась по расписанию.
Для этого открываем крон на редактирование:
crontab -e
И последней строчкой добавляем следующее:
15 3 * */2 * /usr/bin/certbot renew >> /var/log/sslrenew.log
А после записываем крон (как и выше, в случае с vi- клавиша ESC и :х).
В этом случае раз в два месяца, в 3.15 ночи сервер будет запрашивать новые сертификаты и писать журнал их обновлений в файл /var/log/sslrenew.log