Меню Рубрики

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

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

Настраиваем Apache для работы по HTTPS (SSL) с сертификатами Let’s Encrypt

Сегодня защищенное соединение перестало быть уделом сайтов, работающих с пользовательскими данными, а стало насущной необходимостью для всех, даже если у вас простой блог о личном увлечении. Большинство современных браузеров при заходе на простой HTTP-сайт уже указывают в адресной строке, что подключение не защищено, но в скором будущем начнут помечать такие сайты как небезопасные. Тем более что с приходом Let’s Encrypt шифрование стало доступно каждому и настроить его несложно, о чем мы и расскажем в данной статье.

Начнем мы с наиболее популярного веб-сервера Apache, первоначальная настройка которого выполнена по нашей статье: Настраиваем веб-сервер на базе Apache в Debian / Ubuntu Server. В данной статье будет использоваться Apache 2.4 установленный в среде Debian 10, но все сказанное ниже будет справедливо для любого основанного на Debian или Ubuntu дистрибутива, а с некоторыми поправками — для любой Linux системы.

Будем считать, что у нас уже настроен как минимум один виртуальный хост, на котором работает сайт, допустим, example.com, минимальная конфигурация виртуального хоста должна выглядеть примерно так:

Мы не будем подробно описывать значение опций, это сделано в указанной нами статье, а конфигурация приведена для примера, на который мы будем опираться в дальнейшем по ходу статьи.

Прежде всего нам потребуется настроить веб-сервер для работы с Let’s Encrypt, сделав так, чтобы сертификаты можно было легко получать для любого обслуживаемого сервером сайта без дополнительных настроек. Создадим для этого специальную директорию:

И сделаем ее владельцем веб сервер:

Затем создадим файл конфигурации для Аpache:

и внесем в него следующий текст:

Эта настройка будет перенаправлять все запросы к /.well-known/acme-challenge любого сайта в созданную нами директорию /var/www/letsencrypt.

Подключим конфигурационный файл:

и проверим конфигурацию на ошибки:

Затем перезапустим веб-сервер

Следующим шагом установим certbot, в современных дистрибутивах он включен в репозитории, поэтому достаточно выполнить:

Если вы используете более старые дистрибутивы, то обратитесь к нашей статье: Получаем сертификаты Let’s Encrypt при помощи Certbot

Пакет не требует начальной настройки и готов к работе сразу после установки. Перед тем, как получать сертификат, убедитесь, что к вашему серверу есть доступ из интернета. В любом случае советуем сначала выполнить пробное получение:

За тестовый режим отвечает ключ —dry-run, ключ —webroot указывает используемый плагин, в нашем случае отвечающий за работу с уже имеющемся веб-сервером. Опция -w указывает корневую директорию для Let’s Encrypt, которую мы создали и настроили ранее, а через ключи -d перечисляются домены и поддомены, для которых требуется получить сертификат. Если все прошло успешно вы получите лаконичное сообщение:

После того, как тест прошел успешно можно выполнить настоящее получение сертификатов, для этого просто уберите ключ —dry-run из команды.

Читайте также:  Установка переднего бампера ford fusion

Теперь вы получите более информативное сообщение, содержащее информацию о расположении полученных сертификатов и сроков их действия:

Все полученные сертификаты, точнее символические ссылки на них, хранятся в /etc/letsencrypt/live в директориях с именами доменов. Настройки продления можно найти в /etc/letsencrypt/renewal, откроем настройку нашего домена /etc/letsencrypt/renewal/example.com.conf и внесем в секцию [renewalparams] следующую опцию:

Порядок расположения опций значения не имеет. Параметр renew_hook позволяет указать действие, которое следует выполнить при успешном продлении сертификата, в нашем случае это перезапуск веб-сервера Apache.

Сертификат получен, можно переходить к настройке виртуального хоста для работы сайта по защищенному протоколу, рекомендуем скопировать текущий файл конфигурации и вносить настройки в него:

Затем откроем его и сразу изменим порт с 80 на 443:

Также советуем изменить имена файлов логов:

Эти опции включают SSL и указывают пути к сертификатам. В теории этого достаточно, но в современных условиях такие настройки не будут надежными, так как разрешают использование устаревших протоколов и нестойких шифров. Для получения современной и актуальной конфигурации SSL мы советуем воспользоваться сервисом moz://a SSL Configuration Generator, который предлагает несколько вариантов настроек, оптимальным является использование опции Intermediate.

Но не следует добавлять сразу все опции, ряд из них могут иметь достаточно «неожиданное» действие на неподготовленного пользователя. Поэтому сначала разберемся с шифрами и протоколами:

Первая опция отключает устаревшие и небезопасные протоколы SSLv3, TLS 1.0 и TLS 1.1, вторая задает доступные к использованию шифры. Создание набора шифров — это наиболее сложная задача, поэтому лучше довериться специалистам Mozilla, нежели изобретать велосипед самостоятельно.

Первая строка определяет приоритет при выборе шифра, включенная опция отдает приоритет серверу, выключенная — браузеру клиента. В целях совместимости следует отдавать приоритет выбору клиента, а выбор сервера использовать только тогда, когда требуется принудительно использовать максимально стойкое шифрование. Вторая отключает использование сессионных билетов SSL, что требуется для обеспечения режима совершенной прямой секретности.

Также разрешим использование протокола HTTP/2, если это возможно:

Сохраним файл конфигурации и подключим его:

Также нам потребуется модуль SSL:

Проверим конфигурацию и перезапустим веб-сервер:

После чего откройте сайт, явно указав протокол https://example.com

На этом этапе вы можете столкнуться с проблемой смешанного содержимого, когда определенные ресурсы сайта, например, изображения или скрипты загружаются по незащищенному протоколу HTTP. Если к первым браузеры относятся относительно лояльно, просто убирая «замочек» в адресной строке, то вторые по умолчанию блокируются. Поэтому внимательно изучите код вашего сайта и замените везде, где это возможно, получение ресурсов на защищенный протокол HTTPS. Если это невозможно, то от таких ресурсов следует отказаться.

Добившись идеальной работы сайта по HTTPS, двинемся дальше, сначала включим технологию HSTS, которая принудительно активирует защищенное соединение, если сайт хоть один раз был успешно через него загружен. При использовании данного механизма браузер будет принудительно переключаться на HTTPS даже если в строке подключения пользователь явно укажет протокол HTTP, это позволяет успешно бороться с атаками на понижение степени защиты.

Читайте также:  Установка 1jz gte vvti в jzx90

Для этого добавим в конфигурацию виртуального хоста строку:

Также включим механизм OCSP Stapling, который позволяет ускорить проверку сертификата клиентом, что особенно важно для мобильных пользователей. Добавим строку:

Однако этого недостаточно, сохраним настройки виртуального хоста и снова откроем файл /etc/apache2/conf-available/le.conf, куда добавим:

Для работы вышеперечисленных опций нам потребуется модуль Headers:

Снова проверяем конфигурацию и перезапускаем сервер:

Самое время проверить HSTS в действии: перейдите на сайт по защищенному протоколу, а затем попробуйте открыть его HTTP версию, если HSTS работает, то у вас это не получится.

И в завершение настроим перенаправление клиентов с HTTP версии сайта на HTTPS, для этого откроем настройки виртуального хоста HTTP версии /etc/apache2/sites-available/example.com.conf и удалим из него все строки кроме:

Сохраним файл конфигурации и подключим модуль Rewrite:

И еще раз перезапустим сервер, не забыв проверить конфигурацию:

Теперь наш сервер настроен с учетом всех современных методик, проверить это можно на сайте SSL Labs, с текущими настройками была получена высшая оценка A+:

Как видим, настроить веб-сервер Apache для работы по HTTPS совсем несложно. А Let’s Encrypt обеспечит бесплатное получение и обновление сертификатов в автоматическом режиме. Если вы заметили, то мы ничего не писали про настройку автообновления, Certbot все уже сделал за нас.

источник

Установка SSL сертификата: Apache (OpenSSL)

1. Скопируйте полученный сертификат в файл на вашем сервере Apache

Когда процесс выдачи SSL сертификата завершится, на указанный вами e-mail придет электронное письмо, содержащее ваш сертификат. Файл с сертификатом будет называться vash-domain.crt. Если вы просмотрите файл с SSL сертификатом в текстовом редакторе, он будет выглядеть примерно так:
——BEGIN CERTIFICATE——
AGC-SqGSIb3DqvHAqCAMIACAQExALBgkqhkiG9w0BBwGg&gDCCAmowggHXAh
Ub7e50M63v1Z2A/5O5MA0GCSqGSIb3DQBAs+klMF8xCzAJBgNBAlVflqTMd54vSA
(. )
E+cFEpf0WForA+eRP6XraWw8rTN8102zGrcJgg4P6XVS4l39+l5aCEGGbauLP5W6
K99c93ku3QrlX2+KeDi+xBG2cSLsdSiXeQS/16S36ITclu4AADEA+&A5dfAtHS
——END CERTIFICATE——

Скопируйте сертификат в ту же директорию, где находится ваш частный (закрытый) ключ, назовем ее, например /etc/ssl/crt/. Частный ключ в нашем примере будет называться private.key, а публичный – это и есть vash-domain.crt.

2. Установите корневой и промежуточный сертификат

Чтобы браузеры и устройства доверяли вашему сертификату, следует установить сертификаты корневых и промежуточных центров сертификации. Эти сертификаты находятся вместе с файлом Вашего основного сертификата. Для Apache их нужно скомбинировать в ca_bundle.

Чтобы ссылка на этот файл была правильной, следует сделать следующее в соответствующем разделе Virtual Host (Виртуальный хост) для вашего веб-сайта:

a. Для начала скопируйте файл vash-server.ca-bundle в ту же директорию, где находятся файлы сертификата и ключа (в нашем примере /etc/ssl/crt/).

b. Далее добавьте следующую строку в раздел SSL в файле httpd.conf. Напомним, что /etc/ssl/crt/ — директория, в которую мы скопировали файл промежуточного центра сертификации. Если такая строка уже существует, отредактируйте ее, чтобы она выглядела следующим образом:

Читайте также:  Установка pecl memcached php 7

c. Если вы используете другое расположение и другие названия файлов, вам нужно изменить путь и названия файлов в строке или отобразить путь и названия файлов, которые вы используете. Раздел SSL в обновленном файле config теперь должен выглядеть так:

DocumentRoot /var/www/html2
ServerName www. vash-domain .com
SSLEngine on
SSLCertificateFile /etc/ssl/crt/vash-domain.crt
SSLCertificateKeyFile /etc/ssl/crt/private.key
SSLCertificateChainFile /etc/ssl/crt/vash-server.ca-bundle ***

*** Для Apache 1.x используйте: SSLCACertificateFile /etc/ssl/crt/ vash-server.ca-bundle

d. Сохраните файл config и перезапустите Apache.

источник

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

Настройка HTTPS на Apache и установка SSL необходима, чтобы обеспечить защиту данных пользователей на вашем веб-сайте. В инструкции ниже описана установка SSL-сертификата Comodo, GlobalSign и других, предоставляемых REG.RU, и установка SSL, заказанных в других компаниях.

Активный SSL-сертификат

Перед установкой SSL-сертификата от REG.RU перейдите к списку услуг и убедитесь, что услуга SSL-сертификата активна (значок зелёного цвета):

Процесс установки SSL

После выпуска SSL на ваш контактный e-mail придёт письмо с данными для его установки, это:

  • сам сертификат;
  • корневой сертификат;
  • промежуточный сертификат.

Приватный ключ обычно генерируется при заказе SSL и сохраняется на ваш локальный ПК.

Создайте на вашем сервере в каталоге /etc/ssl/ файлы domain_name.crt, private.key и chain.crt со следующим содержимым:

  • domain_name.crt — сам сертификат;
  • private.key — приватный ключ;
  • chain.crt — цепочка сертификатов, которая содержит сначала промежуточный сертификат и следом за ним корневой (с новой строки без пробелов и пустых строк).

Откройте файл конфигурации Apache. В зависимости от особенностей вашего сервера этот файл находится по одному из следующих адресов:

  • для CentOS: /etc/httpd/conf/httpd.conf;
  • для Debian/Ubuntu: /etc/apache2/apache2.conf;
  • если вы устанавливаете SSL-сертификат на OpenServer, используйте путь к его корневой папке.

В конце файла создайте идентичную копию блока «VirtualHost». Для созданного блока укажите порт 443 и добавьте внутри него строки:

Внимание! Для версий Apache, начиная с 2.4.8, последнюю строку добавлять не нужно.

Пример конфигурационного файла:

На этом настройка SSL-сертификата на Apache закончена. Далее необходимо настроить переадресацию для вашего сайта.

Настройка HTTPS на Apache

После установки SSL необходимо настроить редирект с протокола HTTP на HTTPS. Редирект для Apache настраивается через файл .htaccess.

Чтобы осуществить переадресацию добавьте в конце файла .htaccess следующие строки:

Подробнее про редирект через .htaccess вы можете узнать в статье: Редирект через .htaccess.

Проверка установленного SSL

Вы можете проверить корректность установки SSL-сертификата по инструкции: Как проверить правильность установки SSL-сертификата?

Если у вас возникли сложности с установкой SSL-сертификата, вы можете написать заявку в службу поддержки, и наши специалисты вам помогут.

источник

Добавить комментарий

Adblock
detector