Как создать локальный самозаверяющий SSL-сертификат в CentOS 8
SSL (Secure Socket Layer) и его улучшенная версия TLS (Transport Socket Layer) представляют собой протоколы безопасности. которые используются для защиты веб-трафика, отправляемого из веб-браузера клиента на веб-сервер.
Сертификат SSL – это цифровой сертификат, который создает безопасный канал между браузером клиента и веб-сервером. При этом важные и конфиденциальные данные, такие как данные кредитной карты, учетные данные для входа и другая конфиденциальная информация, шифруются, что не позволяет хакерам подслушать и украсть вашу информацию.
Что такое самоподписанный SSL-сертификат?
Самозаверяющий сертификат SSL, в отличие от других сертификатов SSL, которые подписаны и которым доверяет центр сертификации (CA), представляет собой сертификат, подписанный физическое лицо, владеющее им.
Его создание совершенно бесплатно и является дешевым способом шифрования вашего локально размещенного веб-сервера. Однако использование самозаверяющего SSL-сертификата в производственных средах крайне не рекомендуется по следующим причинам:
- Поскольку самоподписанный SSL-сертификат не подписан центром сертификации, он генерирует оповещения в веб-браузерах, предупреждая пользователей о потенциальном риске, если они решат продолжить. Эти оповещения нежелательны и отпугивают пользователей от посещения вашего веб-сайта, что потенциально может привести к снижению веб-трафика. В качестве обходного пути к этим оповещениям организации обычно рекомендуют своим сотрудникам просто игнорировать оповещения и продолжать работу. Это может породить опасную привычку среди пользователей, которые могут решить и дальше игнорировать эти предупреждения на других онлайн-сайтах, потенциально становясь жертвами фишинговых сайтов.
- Самозаверяющие сертификаты имеют низкий уровень безопасности, поскольку в них реализованы технологии низкоуровневого шифрования и хэширования. Таким образом, уровень безопасности может не соответствовать стандартным политикам безопасности.
- Кроме того, нет поддержки функций инфраструктуры открытых ключей (PKI).
Тем не менее, использование самозаверяющего сертификата SSL — неплохая идея для тестирования служб и приложений на локальном компьютере, требующем шифрования TLS/SSL.
В этом руководстве вы узнаете, как установить локальный самозаверяющий сертификат SSL на веб-сервере Apache localhost в серверной системе CentOS 8.
Предпосылки:
Прежде чем приступить к работе, убедитесь, что у вас соблюдены следующие основные требования:
- Экземпляр сервера CentOS 8.
- Веб-сервер Apache установлен на сервере
- Имя хоста уже настроено и определено в файле /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.