Поиск по сайту:

Как создать локальный самозаверяющий SSL-сертификат в CentOS 8


SSL (Secure Socket Layer) и его улучшенная версия TLS (Transport Socket Layer) представляют собой протоколы безопасности. которые используются для защиты веб-трафика, отправляемого из веб-браузера клиента на веб-сервер.

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

Что такое самоподписанный SSL-сертификат?

Самозаверяющий сертификат SSL, в отличие от других сертификатов SSL, которые подписаны и которым доверяет центр сертификации (CA), представляет собой сертификат, подписанный физическое лицо, владеющее им.

Его создание совершенно бесплатно и является дешевым способом шифрования вашего локально размещенного веб-сервера. Однако использование самозаверяющего SSL-сертификата в производственных средах крайне не рекомендуется по следующим причинам:

  1. Поскольку самоподписанный SSL-сертификат не подписан центром сертификации, он генерирует оповещения в веб-браузерах, предупреждая пользователей о потенциальном риске, если они решат продолжить. Эти оповещения нежелательны и отпугивают пользователей от посещения вашего веб-сайта, что потенциально может привести к снижению веб-трафика. В качестве обходного пути к этим оповещениям организации обычно рекомендуют своим сотрудникам просто игнорировать оповещения и продолжать работу. Это может породить опасную привычку среди пользователей, которые могут решить и дальше игнорировать эти предупреждения на других онлайн-сайтах, потенциально становясь жертвами фишинговых сайтов.
  2. Самозаверяющие сертификаты имеют низкий уровень безопасности, поскольку в них реализованы технологии низкоуровневого шифрования и хэширования. Таким образом, уровень безопасности может не соответствовать стандартным политикам безопасности.
  3. Кроме того, нет поддержки функций инфраструктуры открытых ключей (PKI).

Тем не менее, использование самозаверяющего сертификата SSL — неплохая идея для тестирования служб и приложений на локальном компьютере, требующем шифрования TLS/SSL.

В этом руководстве вы узнаете, как установить локальный самозаверяющий сертификат SSL на веб-сервере Apache localhost в серверной системе CentOS 8.

Предпосылки:

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

  1. Экземпляр сервера CentOS 8.
  2. Веб-сервер Apache установлен на сервере
  3. Имя хоста уже настроено и определено в файле /etc/hosts. В этом руководстве мы будем использовать tecmint.local имя хоста для нашего сервера.

Шаг 1. Установка Mod_SSL в CentOS

1. Для начала вам необходимо убедиться, что веб-сервер Apache установлен и работает.

sudo systemctl status httpd

Вот ожидаемый результат.

Если веб-сервер не запущен, вы можете запустить и включить его при загрузке с помощью команды.

sudo systemctl start httpd
sudo systemctl enable httpd

После этого вы сможете убедиться, что Apache запущен и работает.

2. Чтобы включить установку и настройку локального самозаверяющего сертификата SSL, требуется пакет mod_ssl.

sudo dnf install mod_ssl

После установки вы можете проверить ее установку, запустив.

sudo rpm -q mod_ssl

Также убедитесь, что пакет OpenSSL установлен (OpenSSL устанавливается по умолчанию в CentOS 8).

sudo rpm -q openssl 

Шаг 2. Создайте локальный самозаверяющий SSL-сертификат для Apache

3. Когда веб-сервер Apache и все необходимые условия проверены, вам необходимо создать каталог, в котором будут храниться криптографические ключи.

В этом примере мы создали каталог /etc/ssl/private.

sudo mkdir -p /etc/ssl/private

Теперь создайте локальный ключ и файл сертификата SSL с помощью команды:

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout tecmint.local.key -out tecmint.local.crt

Давайте посмотрим, что на самом деле означают некоторые параметры команды:

  • req -x509 — это указывает на то, что мы используем запрос на подпись сертификата x509 (CSR).
  • -nodes – этот параметр указывает OpenSSL пропустить шифрование сертификата SSL с использованием парольной фразы. Идея здесь состоит в том, чтобы позволить Apache читать файл без какого-либо вмешательства пользователя, что было бы невозможно, если бы была указана парольная фраза.
  • -newkey rsa:2048 — это указывает на то, что мы хотим одновременно создать новый ключ и новый сертификат. Часть rsa:2048 подразумевает, что мы хотим создать 2048-битный ключ RSA.
  • -keyout – этот параметр указывает, где хранить сгенерированный файл закрытого ключа после создания.
  • -out — параметр указывает, где разместить созданный сертификат SSL.

Шаг 3. Установите локальный самозаверяющий SSL-сертификат на Apache

4. После создания файла сертификата SSL пришло время установить сертификат, используя настройки веб-сервера Apache. Откройте и отредактируйте файл конфигурации /etc/httpd/conf.d/ssl.conf.

sudo vi /etc/httpd/conf.d/ssl.conf

Убедитесь, что между тегами виртуального хоста есть следующие строки.

<VirtualHost *:443>
    ServerAdmin [email 
    ServerName www.tecmint.local
    ServerAlias tecmint.local
 
    DocumentRoot /var/www/html
 
    SSLEngine on
    SSLCertificateFile /etc/ssl/private/tecmint.local.crt
    SSLCertificateKeyFile /etc/ssl/private/tecmint.local.key
</VirtualHost>

Сохраните и выйдите из файла. Чтобы изменения вступили в силу, перезапустите Apache с помощью команды:

sudo systemctl restart httpd

5. Чтобы внешние пользователи могли получить доступ к вашему серверу, вам необходимо открыть порт 443 через брандмауэр, как показано.

sudo firewall-cmd --add-port=443 --zone=public --permanent
sudo firewall-cmd --reload

Шаг 3. Тестирование локального самозаверяющего SSL-сертификата на Apache

Имея все настройки, запустите браузер и просмотрите адрес вашего сервера, используя IP-адрес сервера или доменное имя, используя протокол https.

Чтобы упростить тестирование, вы можете рассмотреть возможность перенаправления протокола HTTP на HTTPS на веб-сервере Apache. Это сделано для того, чтобы всякий раз, когда вы просматриваете домен по простому HTTP, он автоматически перенаправляется на протокол HTTPS.

Поэтому просмотрите домен или IP-адрес вашего сервера

https://domain_name/

Вы получите предупреждение о том, что соединение небезопасно, как показано. Это будет варьироваться от одного браузера к другому. Как вы могли догадаться, предупреждение связано с тем, что сертификат SSL не подписан Центром сертификации, и браузер регистрирует это и сообщает, что сертификату нельзя доверять.

Чтобы перейти на свой веб-сайт, нажмите вкладку «Дополнительно», как показано выше:

Затем добавьте исключение в браузер.

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

Мы надеемся, что теперь вы сможете продолжить, создать и установить самозаверяющий сертификат SSL на локальном веб-сервере Apache в CentOS 8.