bg-tutorials

Как установить SSL-сертификат на CentOS

В этом руководстве вы узнаете, как установить SSL-сертификат на CentOS и его преемников из семейства RHEL (AlmaLinux, Rocky Linux и CentOS Stream) с использованием веб-сервера Apache httpd.

Мы также записали видео, которое проведет вас через весь процесс. Если вы предпочитаете текстовую версию, продолжайте читать ниже.


Создание кода CSR

При заказе SSL-сертификата вы сначала создаете CSR (запрос на подпись сертификата) и отправляете его в удостоверяющий центр. CSR представляет собой блок текста, содержащий ваши контактные данные и данные домена, и связан с закрытым ключом, созданным одновременно с ним. У вас есть два варианта:

Отправьте CSR в удостоверяющий центр во время оформления заказа. Как только CA проверит его и выдаст сертификат, переходите к установке ниже.

Установка SSL-сертификата на CentOS / RHEL (Apache)

Обратите внимание на версии: поддержка CentOS Linux 8 завершилась 31 декабря 2021 года, а CentOS Linux 7 достиг конца жизненного цикла 30 июня 2024 года. Для рабочих серверов используйте поддерживаемый дистрибутив семейства RHEL: RHEL 8/9/10, AlmaLinux, Rocky Linux или CentOS Stream. Все они имеют одинаковую структуру Apache httpd, поэтому приведенные ниже шаги подходят для каждого из них.

Перед началом работы

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

  • yourdomain.crt — ваш основной SSL-сертификат.
  • yourdomain.ca-bundle — промежуточные сертификаты (CA-бандл).
  • yourdomain.key — закрытый ключ, сгенерированный вместе с CSR.

Важно: никогда не объединяйте закрытый ключ с цепочкой сертификатов. Ключ должен храниться в отдельном файле, доступном для чтения только пользователю root.

Шаг 1: Установите поддержку TLS (mod_ssl)

Установите mod_ssl, который добавляет поддержку TLS в Apache и создает конфигурацию TLS по умолчанию в /etc/httpd/conf.d/ssl.conf:

sudo dnf install -y mod_ssl

На старых системах, которые все еще используют менеджер пакетов yum, вместо этого выполните sudo yum install -y mod_ssl.

Шаг 2: Разместите файлы SSL

Скопируйте закрытый ключ в /etc/pki/tls/private/ и ограничьте права доступа так, чтобы его мог читать только root:

sudo cp yourdomain.key /etc/pki/tls/private/
sudo chown root:root /etc/pki/tls/private/yourdomain.key
sudo chmod 600 /etc/pki/tls/private/yourdomain.key

Затем создайте файл полной цепочки, объединив ваш сертификат и CA-бандл, и разместите его в /etc/pki/tls/certs/:

cat yourdomain.crt yourdomain.ca-bundle 
  | sudo tee /etc/pki/tls/certs/yourdomain-fullchain.crt > /dev/null

Файл полной цепочки должен содержать только публичный сертификат и промежуточную цепочку, но никогда закрытый ключ.

Шаг 3: Настройте виртуальный хост Apache с TLS

Вы можете либо отредактировать файл по умолчанию /etc/httpd/conf.d/ssl.conf, созданный mod_ssl, либо (что более аккуратно) создать отдельный файл для вашего сайта, например /etc/httpd/conf.d/yourdomain.conf. Откройте его в текстовом редакторе:

sudo nano /etc/httpd/conf.d/yourdomain.conf

Добавьте виртуальный хост на порту 80, который перенаправляет весь трафик на HTTPS, а затем виртуальный хост на защищенном порту 443, содержащий директивы SSL:

<VirtualHost *:80>
  ServerName yourdomain.com
  ServerAlias www.yourdomain.com
  Redirect permanent / https://yourdomain.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName yourdomain.com
  ServerAlias www.yourdomain.com
  DocumentRoot /var/www/yourdomain.com

  SSLEngine on
  SSLCertificateFile    /etc/pki/tls/certs/yourdomain-fullchain.crt
  SSLCertificateKeyFile /etc/pki/tls/private/yourdomain.key
</VirtualHost>
  • SSLCertificateFile — ваш файл полной цепочки (сертификат + промежуточные сертификаты). В Apache версии 2.4.8 и новее эта единственная директива заменяет устаревшую SSLCertificateChainFile.
  • SSLCertificateKeyFile — закрытый ключ, созданный вместе с CSR.

Примечание о хосте по умолчанию: файл mod_ssl /etc/httpd/conf.d/ssl.conf поставляется с собственным блоком <VirtualHost _default_:443> с самоподписанным сертификатом. Когда вы добавляете отдельный хост *:443 для конкретного сайта, как показано выше, запросы, соответствующие вашему ServerName, используют ваш сертификат, но несоответствующие HTTPS-запросы (например, обращение к серверу по IP-адресу) по-прежнему обрабатываются этим хостом по умолчанию с самоподписанным сертификатом. Если вы не хотите такого поведения, закомментируйте блок <VirtualHost _default_:443> в файле ssl.conf или укажите в нем ваш собственный сертификат.

Примечание об усилении TLS: Apache на RHEL 8 и новее следует общесистемной политике криптографии, которая уже отключает устаревшие протоколы. Чтобы установить политику для всего сервера, выполните sudo update-crypto-policies --set DEFAULT (или FUTURE для более строгих настроек). Если вы предпочитаете задавать протоколы для каждого виртуального хоста отдельно, добавьте SSLProtocol -all +TLSv1.2 +TLSv1.3 внутри блока порта 443.

Шаг 4: Проверьте конфигурацию Apache

Всегда проверяйте синтаксис перед перезагрузкой, поскольку одна опечатка может привести к недоступности сайта:

sudo apachectl configtest

Вы должны увидеть сообщение Syntax OK. (Команда sudo httpd -t делает то же самое.) Исправьте все обнаруженные ошибки, прежде чем продолжить.

Шаг 5: Перезапустите Apache

Примените изменения, перезагрузив службу httpd (перезагрузка активирует новую конфигурацию без разрыва активных соединений):

sudo systemctl reload httpd

Если httpd еще не был запущен, запустите его с помощью sudo systemctl enable --now httpd. Теперь ваш сайт должен быть доступен по HTTPS. Чтобы проверить результат и получить мгновенный отчет о статусе, используйте наш SSL Checker.

Примечания для более старых версий CentOS (7 и ранее)

CentOS Linux 7, 6 и 8 уже вышли за пределы жизненного цикла и больше не получают обновлений безопасности, поэтому по возможности переходите на поддерживаемый дистрибутив семейства RHEL. Если вам необходимо работать на устаревшем сервере, процесс тот же, что и выше, с двумя отличиями:

  • Менеджер пакетов: CentOS 7 и 6 используют yum вместо dnf. Проверьте, установлен ли уже mod_ssl, с помощью rpm -qa | grep mod_ssl, и если нет, установите его командой sudo yum install -y mod_ssl.
  • Apache старше версии 2.4.8: только очень старые сборки предшествуют версии 2.4.8. В этом случае храните сертификат и цепочку в отдельных файлах и добавьте третью директиву SSLCertificateChainFile, указывающую на CA-бандл (а не на ваш сертификат):
SSLCertificateFile      /etc/pki/tls/certs/yourdomain.crt
SSLCertificateKeyFile   /etc/pki/tls/private/yourdomain.key
SSLCertificateChainFile /etc/pki/tls/certs/yourdomain.ca-bundle

В Apache версии 2.4.8 и новее (что охватывает все текущие поддерживаемые версии) вместо этого используйте более простую единую директиву SSLCertificateFile с полной цепочкой, показанную в шаге 3.

Где купить SSL-сертификат для CentOS?

Лучшее место для покупки SSL-сертификата для вашего сервера CentOS — это надежный реселлер SSL, такой как SSL Dragon. Наши цены одни из самых низких на рынке, и мы предлагаем регулярные скидки и выгодные предложения по всему ассортименту SSL-продуктов, подкрепленные превосходной поддержкой клиентов. Все наши сертификаты совместимы с CentOS и его преемниками из семейства RHEL.

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

Часто задаваемые вопросы

Как узнать, установлен ли SSL-сертификат на CentOS?

Подключитесь к своему сайту с помощью OpenSSL и прочитайте предоставляемый им сертификат:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
Если сертификат установлен, эта команда выведет его издателя и сроки действия. Чтобы вместо этого проверить файл сертификата на диске, выполните openssl x509 -text -noout -in certificate.crt. Вы также можете вывести список активных виртуальных хостов Apache с помощью sudo apachectl -S или открыть сайт в браузере и проверить значок замка.

Где хранятся SSL-сертификаты в CentOS?

По соглашению сертификаты хранятся в /etc/pki/tls/certs/, а закрытые ключи — в /etc/pki/tls/private/. Это расположения по умолчанию для семейства RHEL; вы можете использовать другие каталоги, если ваш виртуальный хост указывает на них.

Где находится конфигурация SSL Apache в CentOS?

Модуль TLS устанавливает свои настройки по умолчанию в файл /etc/httpd/conf.d/ssl.conf, а основная конфигурация Apache находится в /etc/httpd/conf/httpd.conf. Вы можете добавить виртуальные хосты в ssl.conf, но аккуратнее создать отдельный файл для сайта, например /etc/httpd/conf.d/yourdomain.conf. Любой файл .conf в /etc/httpd/conf.d/ загружается автоматически. Журналы Apache хранятся в /var/log/httpd/.

Нужно ли объединять сертификат и CA-бандл в CentOS?

В Apache версии 2.4.8 и более поздних версиях (все текущие поддерживаемые релизы семейства RHEL) — да: объедините ваш сертификат и CA-бандл в один файл полной цепочки и укажите на него в директиве SSLCertificateFile. Отдельная директива SSLCertificateChainFile устарела и нужна только для сборок Apache старше версии 2.4.8.

Как установить OpenSSL на CentOS?

OpenSSL поставляется предустановленным в CentOS и во всех других основных дистрибутивах Linux, поэтому обычно устанавливать его не нужно. Если он отсутствует, добавьте его командой sudo dnf install -y openssl (или sudo yum install -y openssl на CentOS 7 и более ранних версиях). Узнайте больше о OpenSSL и его командах.

Итог

Установка SSL-сертификата на CentOS или RHEL с Apache сводится к установке mod_ssl, размещению закрытого ключа и сертификата с полной цепочкой в каталоге /etc/pki/tls/, настройке блока <VirtualHost *:443> в /etc/httpd/conf.d/, проверке с помощью sudo apachectl configtest и перезагрузке командой sudo systemctl reload httpd. Еще нет сертификата? Просмотрите наши SSL-сертификаты.

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Детальное изображение дракона в полете
Написано

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