pem httpd что это
Настройка Apache + SSL для работы сайта по HTTPS
Инструкция написана для операционных систем на базе UNIX.
Шаг 1. Создание сертификата
Для боевого сервера, сертификат должен быть получен от доверенного центра сертификации — либо локального для компании, либо коммерческого. Или получен бесплатно от Let’s Ecnrypt.
Для тестовой среды можно сгенерировать самоподписанный сертификат. Для этого сперва переходим в рабочую папку.
а) на Red Hat / CentOS:
б) на Debian / Ubuntu:
Создаем папку для сертификатов и переходим в нее:
И генерируем сертификат:
* в данном примере созданы открытый и закрытый ключи на 4 года (1461 день); значения параметра subj могут быть любыми в рамках тестирования.
Шаг 2. Установка модуля SSL для Apache
Прежде, чем устанавливать модуль, выполняем команду:
Если видим строчку, на подобие:
Спускаемся к шагу 3 данной инструкции.
Иначе, устанавливаем httpd ssl_module.
yum install mod_ssl
б) Для Ubuntu/Debian:
Открываем файл конфигурации apache:
* подразумевается, что используется apache 2.4.
Находим и снимаем комментарии со следующих строчек:
.
LoadModule ssl_module libexec/apache24/mod_ssl.so
.
Include etc/apache24/extra/httpd-ssl.conf
.
И ставим комментарии в следующих строках:
#
#SSLRandomSeed startup builtin
#SSLRandomSeed connect builtin
#
Чтобы настройки применились, необходимо перезапустить веб-сервер одной из команд:
systemctl restart httpd
systemctl restart apache2
service apache2 restart
* первая, как правило, используется в системах на базе RPM, вторая — DEB, третья — BSD.
Шаг 3. Настройка Apache
Выходим из папки ssl:
Открываем файл с настройкой виртуальный доменов.
* где site.conf — конфигурационный файл для конкретного сайта
В открытый файл добавляем следующее:
ServerName site.ru
DocumentRoot /var/www/apache/data
SSLEngine on
SSLCertificateFile ssl/cert.pem
SSLCertificateKeyFile ssl/cert.key
* где ServerName — домен сайта; DocumentRoot — расположение файлов сайта в системе; SSLCertificateFile и SSLCertificateKeyFile — пути до файлов ключей, которые были сгенерированы на шаге 1.
Проверяем корректность настроек в Apache:
Перечитываем конфигурацию apache:
Шаг 4. Проверка работоспособности
Открываем браузер и переходим на наш сайт, добавив https://. При использовании самоподписного сертификата (как в нашем случае), обозреватель выдаст предупреждение, что передача данных не безопасна. Подтверждаем наше намерение открыть сайт. Если все работает, переходим к шагу 5.
Если сайт не заработал, пробуем найти причину по log-файлу. Как правило, он находится в каталоге /var/log/apache или /var/log/httpd.
Шаг 5. Настройка редиректа
Чтобы все запросы по http автоматически перенаправлялись на https, необходимо настроить перенаправление (redirect). Есть несколько способов это сделать.
В конфигурационном файле
Открываем файл с настройкой виртуальных доменов (как в шаге 3) и дописываем следующее:
ServerName site.ru
RewriteEngine On
RewriteCond %
RewriteRule (.*) https://%
* в конкретном примере, мы перенаправили все запросы для сайта site.ru.
** обратите особое внимание, что если у Вас уже есть VirtualHost *:80 для настраиваемого сайта, необходимо его закомментировать или отредактировать.
Установка модуля rewrite
Чтобы перенаправление работало в Apache, необходимо установить модуль rewrite.
а) в CentOS открываем конфигурационный файл и проверяем наличие строки:
LoadModule rewrite_module modules/mod_rewrite.so
* если ее нет, добавляем; если она закомментирована, снимаем комментарий.
systemctl restart httpd
systemctl restart apache2
Apache + NGINX
При использовании веб-сервера на базе и Apache и NGINX, как правило, наружу смотрит последний. В таком случае, именно он будет отвечать на http-запросы, и в таком случае нужно настраивать SSL на NGINX.
Как настроить Apache для работы по HTTPS (SSL)
Установка сертификата на HTTP сервер Apache
Данная статья предлагает пошаговую инструкцию по установке сертификата на HTTP сервер Apache. Обратите внимание, что с версии 2.4.8 Apache параметры конфигурации сервера были изменены.
1. Скопируйте файлы сертификатов на ваш сервер.
Вам нужно скопировать на сервер следующие файлы: сертификат сервера, закрытый (приватный) ключ и промежуточный сертификат, соответствующий типу Вашего сертификата сервера.
Сертификат сервера направлялся Вам по электронной почте после его выпуска в GlobalSign. Также Вы можете получить его в своей учётной записи GlobalSign, нажав на кнопку
«Edit» слева от номера заказа и скопировав сертификат в формате PEM.
Закрытый ключ для сертификата создаётся вместе с запросом на сертификат (CSR), поэтому файл закрытого ключа уже может находиться на Вашем сервере. Если приватный ключ утерян, то сертификат нужно перевыпустить.
Промежуточный (intermediate) сертификат, который потребуется установить на сервер, зависит от типа Вашего сертификата. Именно наличие промежуточного сертификата в цепочке позволяет связать Ваш сертификат с корневым (root) сертификатом GlobalSign и сделать цепочку доверенной. Загрузите один или несколько промежуточных сертификатов, соответственно типа Вашего сертификата, по ссылке ниже:
support.globalsign.com/customer/portal/topics/538410-root-certificates/articles
2. Откройте для редактирования конфигурационный файл Apache.
В зависимости от типа операционной системы путь директории конфигурационного
файла может быть разным:
Более подробную информацию о пути нахождения конфигурационного файла можно найти по ссылке ниже:
https://wiki.apache.org/httpd/DistrosDefaultLayout
3. Настройте виртуальный хост для работы сертификата.
Найдите раздел VirtualHost и добавьте (или отредактируйте, если они уже имеются) следующие директивы, указав актуальные пути к файлам сертификатов и ключа:
Убедитесь в правильности путей SSLCertificateFile, SSLCertificateKeyFile, SSLCertificateChainFile, каждый из них должен указывать на соответствующий файл.
Примечание: Начиная с версии Apache 2.4.8, вместо директивы SSLCertificateChainFile следует использовать директиву SSLCertificateFile, которая была расширена для поддержки промежуточных сертификатов. Добавление промежуточного сертификата в конец файла сертификата сервера создаст необходимую доверенную цепочку.
4. Протестируйте созданную конфигурацию сервера.
В зависимости от операционной системы, выполните команду:
Запуск команды обнаружит ошибки конфигурации сервера, такие как несоответствие закрытого ключа и сертификата либо неверный путь конфигурационного файла.
5. Перезапустите сервер Apache.
Для более старых версий дистрибутива Red Hat Enterprise Linux используйте скрипты:
Для дистрибутивов Red Hat Linux 7 или CentOS 7.0 используйте следующие команды:
Примечание: некоторые конфигурации Apache могут отображать директиву SSLCACertificateFile.
Данное поле необходимо только, если сервер Apache используется для аутентификации клиента.
Директива SSLCACertificateFile будет указывать на сертификат удостоверяющего центра или директорию сертификатов, которые в свою очередь служат для выпуска сертификатов, принимаемых вами для аутентификации клиента.
Этот файл можно использовать в разных целях.
Основной синтаксис
Как использовать файл pem для сертификатов SSL?
Эти файлы будут предоставлены вам вашим поставщиком SSL для использования на вашем веб-сервере.
Следующие сертификаты будут созданы с помощью certbot LetsEncrypt.
Как использовать файлы Pem для SSH?
Файлы Pem также могут использоваться для SSH.
Интересно отметить, что когда вы создаете новый инстанст в веб-сервисах Amazon, он предоставляет вам pem-файл, содержащий закрытый ключ, и этот ключ используется для того, чтобы иметь возможность подключаться к новым инстансам по SSH.
Самый простой способ добавить закрытый ключ в ваш ssh-agent с помощью команды ssh-add следующим образом:
Заключение
Anything in here will be replaced on browsers that support the canvas element
Настройка HTTPS в Apache
Содержание
Веб-сервер Apache полностью поддерживает работу по HTTPS. Для того, чтобы активировать поддержку HTTPS на уже установленном Apache необходимо выполнить следующее.
Создание ключа и ssl-сертификата
Использование самоподписанных сертификатов хоть и защищает от пассивного прослушивания, тем не менее не гарантирует клиентам, что сервер является именно тем сервером, который им нужен. Преймуществом самоподписанных сертификатов является их бесплатность. Сертификат, подписанных компанией-сертификатором (Certificate authority) стоит денег.
Для создания ключа и сертификата вводим команду:
На вопрос «Enter PEM pass phrase:» отвечаем паролем, подтверждаем и запоминаем. На все последующие вопросы отвечаем произвольно, можно просто щелкать по Enter соглашаясь с предложенными вариантами, только на вопрос «Common Name (eg, YOUR name) []:» отвечаем именем сайта, для которого создаем сертификат, например www.example.com.
Чтобы использовать сгенерированный ключ нужно знать пароль введенный нами, и Apache будет спрашивать его у нас при загрузке, а к чему нам лишние вопросы от демонов? 🙂 Поэтому снимаем пароль с ключа:
Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору:
Настройка Apache
Для начала необходимо активировать mod_ssl :
А затем включить настройки HTTPS сайта по умолчанию:
Теперь необходимо отредактировать файл с настройками HTTPS сайта по умолчанию, указав в нём пути к вашим сертификатам. Сам файл называется /etc/apache2/sites-enabled/default-ssl (или /etc/apache2/sites-enabled/default-ssl.conf ).
В этом файле рекомендуется после директивы
дабы запретить использование устаревшего протокола SSLv2.
Дальше вам необходимо отредактировать параметры, ответственные за сертификаты.
Теперь просто перезагрузите Apache:
И если все параметры указаны верно, ваши сайты станут доступны по HTTPS.
Перенаправление HTTP запросов на HTTPS
При этом все настройки директорий можно удалить, поскольку по HTTP на ваши сайты всё равно будет не попасть.
Всё, теперь ещё раз перезапустите Apache и убедитесь, что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS страницу.
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Настраиваем Apache для работы по HTTPS (SSL) с сертификатами Let’s Encrypt
Сегодня защищенное соединение перестало быть уделом сайтов, работающих с пользовательскими данными, а стало насущной необходимостью для всех, даже если у вас простой блог о личном увлечении. Большинство современных браузеров при заходе на простой HTTP-сайт уже указывают в адресной строке, что подключение не защищено, но в скором будущем начнут помечать такие сайты как небезопасные. Тем более что с приходом Let’s Encrypt шифрование стало доступно каждому и настроить его несложно, о чем мы и расскажем в данной статье.
Будем считать, что у нас уже настроен как минимум один виртуальный хост, на котором работает сайт, допустим, 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 из команды.
Теперь вы получите более информативное сообщение, содержащее информацию о расположении полученных сертификатов и сроков их действия:
Все полученные сертификаты, точнее символические ссылки на них, хранятся в /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.
Но не следует добавлять сразу все опции, ряд из них могут иметь достаточно «неожиданное» действие на неподготовленного пользователя. Поэтому сначала разберемся с шифрами и протоколами:
Также разрешим использование протокола HTTP/2, если это возможно:
Сохраним файл конфигурации и подключим его:
Также нам потребуется модуль SSL:
Проверим конфигурацию и перезапустим веб-сервер:
После чего откройте сайт, явно указав протокол https://example.com
На этом этапе вы можете столкнуться с проблемой смешанного содержимого, когда определенные ресурсы сайта, например, изображения или скрипты загружаются по незащищенному протоколу HTTP. Если к первым браузеры относятся относительно лояльно, просто убирая «замочек» в адресной строке, то вторые по умолчанию блокируются. Поэтому внимательно изучите код вашего сайта и замените везде, где это возможно, получение ресурсов на защищенный протокол HTTPS. Если это невозможно, то от таких ресурсов следует отказаться.
Добившись идеальной работы сайта по HTTPS, двинемся дальше, сначала включим технологию HSTS, которая принудительно активирует защищенное соединение, если сайт хоть один раз был успешно через него загружен. При использовании данного механизма браузер будет принудительно переключаться на HTTPS даже если в строке подключения пользователь явно укажет протокол HTTP, это позволяет успешно бороться с атаками на понижение степени защиты.
Для этого добавим в конфигурацию виртуального хоста строку:
Также включим механизм 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 все уже сделал за нас.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал: