Настройка Apache https для CentOS 7
Обновлено: 21.11.2024
Веб-сервер Apache — один из самых популярных и мощных веб-серверов в мире. Это также один из самых безопасных веб-серверов. В этом руководстве объясняется, как установить и настроить базовый и безопасный веб-сервер Apache в CentOS 7.
Требования
- Сервер под управлением CentOS версии 7.
- Настольный компьютер под управлением Linux
- Статический IP-адрес для вашего сервера
В этом разделе описан процесс подготовки вашего сервера для Apache, настройки Apache и тестирования установки.
Обновите репозиторий пакетов
Перед установкой Apache рекомендуется обновить репозиторий пакетов. Вы можете сделать это, выполнив следующие команды:
Отключить SELinux
По умолчанию SELinux включен в CentOS 7. Рекомендуется сначала отключить его.
Вы можете отключить SELinux, отредактировав файл /etc/selinux/config:
Измените строку с SELINUX=enforcing на SELINUX=disabled
Сохраните и закройте файл, затем перезагрузите компьютер, чтобы изменения вступили в силу.
Разрешить Apache через брандмауэр
Это можно сделать, выполнив следующие команды:
Перезагрузите службу брандмауэра, чтобы изменения вступили в силу.
Создайте тестовую страницу
В CentOS7 путь Apache DocumentRoot по умолчанию — /var/www/html/ . Однако в этом каталоге нет файла index.html. Вам нужно будет создать его.
Добавьте следующее содержимое:
Перезапустите службу Apache, чтобы изменения вступили в силу:
Вы можете настроить запуск службы Apache при загрузке, выполнив следующую команду:
Вы должны увидеть страницу по умолчанию, как на изображении ниже.
Установить SSL
Для защиты Apache необходимо сначала установить SSL.
Вы можете установить SSL с помощью следующей команды:
Создать самозаверяющий сертификат
Затем сгенерируйте запрос на подпись сертификата cs.csr с помощью следующей команды.
Вам будет предложено ввести информацию о сертификате.
Наконец, создайте самозаверяющий сертификат ca.crt типа X509, действительный для ключей 365.
После создания сертификата необходимо скопировать все файлы сертификата в необходимые каталоги.
Это можно сделать, выполнив следующие команды:
Настройте сертификаты
Все сертификаты готовы. Следующее, что нужно сделать, это настроить Apache для отображения новых сертификатов.
Это можно сделать, отредактировав файл конфигурации SSL:
Затем найдите строки SSLCertificateFile и SSLCertificateKeyFile и укажите в них новое расположение сертификатов.
После внесения этих изменений перезапустите службу Apache, чтобы изменения вступили в силу.
В вашем браузере должна появиться ошибка, и вы должны вручную принять сертификат.
После того как вы добавите исключение для проверки личности браузера, вы должны увидеть тестовую страницу для вашего недавно защищенного сайта.
В этом пошаговом руководстве используется CentOS 7 и работа с самозаверяющим сертификатом. Самоподписанный вариант отлично подходит для личных сайтов или целей тестирования. Для официальных бизнес-развертываний вам необходимо приобрести SSL-сертификат у надежной компании (например, Digicert, Network Solutions или GlobalSign). Я также предполагаю, что на сервере уже запущен Apache.
Обязательно к прочтению статьи о безопасности
С учетом сказанного давайте начнем процесс.
Установка и использование OpenSSL
Первым шагом в этом процессе является установка OpenSSL и создание используемого сертификата. Чтобы установить OpenSSL, откройте окно терминала и введите команду:
sudo yum установить mod_ssl openssl
Приведенная выше команда подберет все необходимые зависимости (рис. A).
Рисунок А
Теперь мы сгенерируем ключ SSL с помощью следующих команд:
Создать закрытый ключ
​sudo openssl genrsa -out ca.key 2048
Создать CSR
sudo openssl req -new -key ca.key -out ca.csr
Создать самоподписанный ключ
sudo openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
Теперь нам нужно скопировать вновь созданные файлы в нужные места с помощью следующих команд:
sudo cp ca.crt /etc/pki/tls/certs
sudo cp ca.key /etc/pki/tls/private/ca.key
sudo cp ca.csr /etc/pki /tls/private/ca.csr
Когда вы вводите команду для создания CSR, вам будет задан ряд вопросов для ключа (например, название страны, штат или провинция, населенный пункт, название организации, организационная единица, обычное имя, адрес электронной почты и т. д. ). OpenSSL также потребует ввести контрольный пароль для CSR.
Файл SSLCertificateFile /etc/pki/tls/certs/ca.crtФайл SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
Наконец, перезапустите демон Apache с помощью команды:
Создать виртуальный хост
Давайте создадим виртуальный хост, использующий SSL. Для этого мы создадим необходимые каталоги с помощью следующих команд:
В качестве примера я использую слово "очаровательный". Вы можете использовать любое имя, которое вам нравится/нужно.
Сохраните и закройте этот файл.
ServerAdmin email@address
DocumentRoot "/var/www/html/adorkable/"
ServerName AdorkableDesigns
ServerAlias adorkable
Журнал ошибок /var/www/html /adorkable/error.log
DirectoryIndex index.html index.php
Параметры FollowSymLinks
AllowOverride All
Требовать все предоставленные
Сохраните и закройте этот файл.
Чтобы Apache знал о новом виртуальном хосте, мы должны создать символическую ссылку с сайтов, доступных на сайты, с поддержкой, с помощью команды:
Перезапустите Apache с помощью команды:
Теперь ваш виртуальный хост должен быть виден серверу. Все, что вам нужно сделать, это добавить контент в каталог /var/www/html/adorkable, и все готово.
Быстрый тест
Сертификаты SSL – это небольшие файлы данных, подтверждающие право собственности на открытый криптографический ключ. Центры сертификации (ЦС) гарантируют, что ключ принадлежит организации, серверу или другому объекту, указанному в сертификате.
Когда пользователь через свой браузер получает доступ к сертифицированному веб-сайту, информация шифруется с помощью уникального открытого ключа. Данные могут быть расшифрованы только с использованием уникального закрытого ключа, расположенного на хост-сервере. Этот высокий уровень шифрования предотвращает несанкционированные попытки доступа к информации.
Из этого руководства вы узнаете, как установить SSL-сертификат в CentOS 7.
- Пользователь с правами sudo
- Доступ к командной строке (Ctrl-Alt-T)
- Компьютер с CentOS 7.
- Действительное доменное имя с DNS, указывающим на сервер
Как получить сертификат SSL
Есть несколько способов получить Сертификаты:
- Использование автоматизированного и бесплатного центра сертификации, такого как проект Let’s Encrypt.
- Коммерческие центры сертификации предоставляют платные сертификаты (Comodo, DigiCert, GoDaddy)
- В качестве альтернативы можно создать самозаверяющий сертификат. Этот тип сертификата удобен для целей тестирования или для использования в среде разработки.
Если вы все еще думаете, какой тип сертификата вам нужен или какой ЦС выбрать, мы подготовили подробное руководство по SSL-сертификатам, закрытым ключам и CSR, чтобы помочь вам в этом процессе.
Примечание. Доверенные центры сертификации не проверяют самозаверяющие сертификаты. Пользователи не могут использовать его для автоматической проверки подлинности своего сервера.
Установите SSL-сертификат с помощью Let’s Encrypt
Let’s Encrypt — это бесплатный, открытый и автоматизированный центр сертификации. Он использует программный инструмент certbot для автоматического администрирования сертификатов.
Certbot – это высокоавтоматизированный инструмент. Убедитесь, что ваша установка Apache действительна и что у вас есть виртуальный хост, настроенный для вашего домена/ов. Сначала вам следует прочитать наше руководство по установке Apache на CentOS 7, если вам нужна помощь в настройке брандмауэра и виртуальных хостов.
Установка Certbot
<р>1. Используйте командный терминал для установки репозитория EPEL и yum-utils: <р>2. Затем установите модуль, поддерживающий SSL для Apache:В этом примере последняя версия модуля уже доступна.
<р>3. Теперь мы можем установить certbot для Apache:
<р>4. После завершения установки вы можете начать процесс получения сертификата, введя:Кроме того, запустите certbot, введя:
После того, как вы сделаете свой выбор, сообщение на терминале подтвердит, что вы включили шифрование для своего домена.
Автоматическое обновление сертификата
Сертификаты, выпущенные Let’s Encrypt, действительны в течение 90 дней. Команда certbot renew проверяет установленные сертификаты и пытается обновить их, если до истечения срока их действия осталось менее 30 дней. Чтобы автоматизировать этот процесс, создайте задание cron для периодического выполнения команды.
Используйте предпочитаемый текстовый редактор, чтобы определить, как часто следует выполнять команду обновления:
Введите эту строку и сохраните crontab:
Как установить SSL-сертификат с Comodo
<р>1. Первым шагом является отправка запроса на подпись сертификата в центр сертификации. Наше подробное руководство о том, как сгенерировать запрос на подпись сертификата (CSR) с помощью OpenSSL, — отличный ресурс, если вам нужна помощь в этом процессе. <р>2. Как только центр сертификации подтвердит ваш запрос, вы получите копию своего SSL-сертификата. Теперь вы можете установить сертификат на свой сервер CentOS 7.В этом примере показано, как установить сертификат от платного поставщика SSL, Comodo.
<р>3. Как только Comodo проверит ваш запрос CSR, загрузите файлы SSL. Скопируйте их (ComodoRSACA.crt) и основной сертификат (yourdomain.crt) в каталог вашего сервера Apache. Закрытый ключ, сгенерированный во время процесса CSR (запроса на подпись сертификата), должен находиться на том же сервере.Настройка виртуальных хостов для SSL
После того, как вы успешно сертифицировали домен и разместили файлы ключей на сервере, следующим шагом будет настройка виртуальных хостов для отображения сертификата.
<р>1. Получите доступ к файлу конфигурации SSL: <р>2. Отредактируйте файл конфигурации, чтобы он указывал на правильные файлы на вашем сервере.Раскомментируйте следующие строки в разделе и введите правильные пути к файлам:
- SSLEngine включен
- SSLCertificateFile – путь к файлу сертификата.
- SSLCertificateKeyFile – путь к файлу ключа.
- SSLCertificateChainFile — промежуточный файл сертификата COMODO.
<р>3. После внесения необходимых изменений выйдите из файла (Ctrl+X) и нажмите y, чтобы сохранить изменения.
<р>4. Проверьте конфигурацию Apache перед перезапуском. Убедитесь, что синтаксис правильный, набрав: <р>5. Как только система подтвердит правильность синтаксиса, перезапустите Apache:Теперь вы настроили сервер Apache для использования SSL-сертификата.
Как создать самозаверяющий SSL-сертификат
Самозаверяющий сертификат полезен для тестирования, в средах разработки и в интрасети.
<р>1. Как и в случае с Let’s Encrypt, модуль Apache mod_ssl поддерживает шифрование SSL: <р>2. Создайте новый каталог для хранения закрытого ключа: <р>3. Ограничить доступ к этому каталогу только пользователю root: <р>4. Создайте самоподписанный сертификат с помощью этой команды OpenSSL:Это подробный обзор элементов:
Примечание. Обязательно замените yourdomain своим фактическим доменом.
<р>5. Система запускает анкету для заполнения.Введите информацию в доступные поля:
- Название страны – используйте двухбуквенный код страны.
- Штат – штат, в котором зарегистрирован владелец домена.
- Населенный пункт – город, в котором зарегистрирован владелец домена.
- Название организации – лицо, которому принадлежит домен.
- Название организационного подразделения – отдел или группа в вашей организации, которая работает с сертификатами.
- Общее имя – чаще всего полное доменное имя (FQDN).
- Адрес электронной почты – контактный адрес электронной почты.
- Проверить пароль — определите необязательный пароль для пары ключей.
Изображение представляет пример анкеты в CentOS 7.
<р>6. Перейдите к настройке виртуального хоста для отображения нового сертификата. Этот процесс идентичен шагам, описанным в Главе 2, Настройка виртуальных хостов для SSL.
<р>7. Проверьте конфигурацию Apache перед перезапуском. Чтобы убедиться в правильности синтаксиса, введите: <р>8. Как только система подтвердит правильность синтаксиса, перезапустите Apache:Теперь вы настроили сервер Apache для использования самозаверяющего SSL-сертификата и должны иметь возможность посещать свой сайт с включенным SSL.
Как проверить, действителен ли сертификат SSL?
Чтобы проверить, действителен ли SSL-сертификат, вы можете воспользоваться общедоступными службами, такими как SSL Server Test. Подтвердите статус своего сертификата и проверьте правильность всех данных.
Следуя этим инструкциям, вы обезопасили трафик на своем веб-сайте с дистрибутивом CentOS Linux, внедрив SSL-сертификат.
Ваш новый SSL-сертификат гарантирует, что все данные, передаваемые между веб-сервером и браузерами, останутся конфиденциальными и безопасными.
Invicti Web Application Security Scanner — единственное решение, обеспечивающее автоматическую проверку уязвимостей с помощью Proof-Based Scanning™.
Наша аудитория поддерживает Geekflare. Мы можем получать партнерские комиссионные за покупку ссылок на этом сайте.
Обеспечьте безопасность приложений правильно! Обнаружение, защита, мониторинг, ускорение и многое другое…
Давайте защитим Apache сертификатом SSL/TLS.
Приступим.
На высоком уровне мы сделаем следующее.
Установите Apache с SSL из исходного кода
- Войдите на сервер Linux с правами root и загрузите последнюю версию Apache
Примечание: последнюю версию можно найти здесь.
Примечание. Если вы делаете это на совершенно новом сервере, у вас могут возникнуть проблемы, связанные с APR, PCRE, OpenSSL, и вы можете обратиться к руководству по устранению неполадок.
Убедитесь, что указанная выше команда configure не вызывает ошибок, а затем выполните установку с помощью команд make.
Как обычно, убедитесь, что приведенные выше команды не привели к ошибкам. Это означает, что вы установили веб-сервер Apache с поддержкой SSL.
Получение сертификата SSL
Существует несколько способов создания и получения SSL-сертификата, подписанного центром сертификации.
Если вы хотите внедрить SSL на веб-сервере интрасети, то в большинстве организаций есть внутренняя группа по выпуску сертификатов, поэтому вам следует проконсультироваться с ними. Но вам все равно нужно сгенерировать CSR (запрос на подпись сертификата), и вы можете сделать это с помощью OpenSSL.
Однако, если вы хотите защитить URL-адрес с выходом в Интернет, вы можете либо купить сертификат у VeriSign, GoDaddy, Namecheap, ZeroSSL и т. д., либо получить БЕСПЛАТНЫЙ сертификат от Let’s Encrypt.
Let’s Encrypt — это совместный проект Linux Foundation, предлагающий БЕСПЛАТНЫЙ сертификат SSL/TLS. Я буду использовать Let’s Encrypt, чтобы получить один сертификат для своего домена — Chandan.io
Существует несколько способов создания CSR, но самый простой из них, который я нашел, — это использование онлайн-инструмента «SSL бесплатно».
Введите URL, который вы хотите защитить
Подтвердите право собственности на домен одним из перечисленных способов и загрузите файлы сертификатов домена.
Вы получите три файла, которые мы будем использовать для настройки веб-сервера Apache.
- key – это ваш ключевой файл, и его нельзя никому раскрывать.
- Сертификат — актуальный SSL-сертификат для вашего домена
- Ca_bundle — корневой/промежуточный сертификат подписывающей стороны.
Перенесите загруженный файл на веб-сервер. Они нам скоро понадобятся.
Конфигурация Apache SSL
- SSLCertificateFile – путь к файлу сертификата CRT, который вы скачали ранее.
- SSLCertificateKeyFile — путь к файлу закрытого ключа
- SSLCertificateChainFile — путь к файлу ca_bundle.crt
Совет: вы можете создать новую папку с именем «ssl» и хранить в ней все файлы, связанные с сертификатами.
- При необходимости сделайте резервную копию и используйте редактор vi для изменения файла.
Далее вам нужно настроить директиву ServerName. Обычно это ваш домен/URL-имя
- Сохраните файл и перезапустите веб-сервер Apache
Вышеуказанные шаги необходимы для настройки SSL-сертификата, и вы должны дополнительно настроить SSL, чтобы сделать его более надежным и безопасным, как я объяснил здесь. Перед запуском вы также можете протестировать SSL/TLS своего веб-сервера, чтобы убедиться, что он не подвержен распространенным уязвимостям безопасности.
Читайте также: