Site icon 8HOST.COM

Создание SSL-сертификата на Apache в CentOS 7

TLS (или Transport Layer Security, протокол безопасности транспортного уровня) и предшествующий ему SSL (Secure Sockets Layer) – это сетевые протоколы, которые шифруют и тем самым защищают трафик. Благодаря этой технологии процесс обмена данными между клиентом и сервером надежно защищен от перехвата посторонним абонентом. Кроме того, система сертификации помогает пользователям проверить подлинность сайта.

В данном руководстве речь пойдет о создании самоподписанного SSL-сертификата для веб-сервера Apache на виртуальном выделенном сервере CentOS 7. Самостоятельно подписанный сертификат не может подтвердить подлинность сайта, поскольку он не заверен центром сертификации (ЦС), которому может доверять браузер; но он будет шифровать взаимодействие между сервером и посетителями сайта, и тем самым повысит безопасность соединения.

Требования

Для выполнения данного руководства нужен предварительно настроенный сервер CentOS 7 и не-рутовая учетная запись пользователя с расширенными привилегиями sudo. Подробнее об этом можно прочесть в руководстве «Начальная настройка сервера CentOS 7».

Кроме того, нужно предварительно установить Apache; для установки веб-сервера можно использовать стандартный менеджер пакетов yum:

sudo yum install httpd

Затем нужно запустить Apache в качестве сервиса CentOS, чтобы автоматизировать запуск Apache после перезагрузки:

sudo systemctl enable httpd.service

1: Установка mod_ssl

Чтобы создать самоподписанный сертификат, для начала нужно установить mod_ssl, модуль Apache для поддержки шифрования SSL. Для этого используйте команду yum:

sudo yum install mod_ssl

После установки модуль включится автоматически, после чего Apache сможет использовать сертификаты SSL. Осталось только перезапустить Apache, чтобы mod_ssl был готов к использованию.

2: Создание SSL-сертификата

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

Сначала нужно создать новый каталог, в котором будет храниться ключ сервера (key-файл) и сам сертификат:

sudo mkdir /etc/httpd/ssl

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

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt

После ввода запроса будет открыта командная строка, в которой можно ввести информацию о сайте. Но сперва рассмотрим подробнее вышеприведенную команду:

Теперь заполните форму соответствующими данными. Самым важным полем в форме является Common Name, в котором нужно указать доменное имя сайта или внешний IP-адрес сервера. Форма имеет такой вид:

Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:Example
Locality Name (eg, city) [Default City]:Example
Organization Name (eg, company) [Default Company Ltd]:Example Inc
Organizational Unit Name (eg, section) []:Example Dept
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:webmaster@example.com

3: Установка SSL-сертификата

Итак, все необходимые компоненты готовы. Теперь нужно настроить виртуальный хост для отображения нового сертификата.

Откройте конфигурационный файл Apache для SSL в текстовом редакторе с привилегиями root:

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

Найдите раздел, который начинается с <VirtualHost _default_:443>. В него нужно внести несколько изменений, чтобы сертификат должным образом отображался на сайте.

Сначала раскомментируйте строку DocumentRoot и отредактируйте адрес в кавычках, указав свой каталог document root. По умолчанию это /var/www/html; если вы используете другой root-каталог веб-сервера, укажите в этой строке правильный адрес.

DocumentRoot "/var/www/example.com/public_html"

Затем раскомментируйте строку ServerName (вместо www.example.com укажите свое доменное имя или IP, в зависимости от того, что было указано в поле Common Name).

ServerName www.example.com:443

Найдите строки SSLCertificateFile и SSLCertificateKeyFile и укажите в них адрес ключа и сертификата – каталог /etc/httpd/ssl:

SSLCertificateFile /etc/httpd/ssl/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl/apache.key

Внеся все изменения, сохраните и закройте файл.

4: Активация сертификата SSL

На данный момент SSL-сертификат и веб-сервер готовы. Чтобы применить все изменения и запустить шифрование SSL, перезапустите сервер Apache, это обновит его конфигурации:

sudo apachectl restart

Чтобы увидеть новый сертификат в действии, посетите в браузере доменное имя или IP в таком формате:

https://example.com/

Скорее всего, браузер выдаст предупреждение вроде «site’s security certificate is not trusted». Это значит, что браузер не может доверять сертификату, который не был заверен авторитетным центром сертификации. Это вполне ожидаемая реакция.

Чтобы продолжить, нужно добавить исключение в проверку подлинности браузера.

Заключение

Теперь сервер Apache поддерживает запросы HTTP и HTTPS. Это обезопасит взаимодействие с клиентами и не позволит посторонним читать ваш трафик.