Skip to main content

Создание самоподписанного SSL-сертификата на Apache в CentOS в 4 шага. Просто и наглядно.

Создание самопдписанного SSL-сертификата на Apache в CentOS в 4 шага. Просто и наглядноСегодняшняя моя статья посвящена созданию и размещению SSL-сертификата на веб-сервере Apache под управлением операционной системы CentOS. Конкретно в своем примере буду использовать CentOS 7.

И так, что же такое эти все SSL?

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

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

Для выполнения данных процедур вам понадобится настроенный сервер CentOS 7 и нерут учетная запись пользователя с расширенными привилегиями sudo.
Соответственно, Apache вам тоже понадобится — для его установки можно использовать стандартный менеджер пакетов yum:
sudo yum install httpd

Затем запускаем Apache в качестве сервиса CentOS, чтобы автоматизировать запуск Apache после перезагрузки:
sudo systemctl enable httpd.service

— И только после этого приступаем к установке SSL.

На все про все у вас уйдет на эту процедуру максимум 20 минут, даже если вы новичок и никогда подобного не делали.

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

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

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

Даю вам справочную информацию по параметрам генерации ключа:

Команда openssl — это инструмент командной строки для создания и управления сертификатами, ключами и другими файлами связанными с OpenSSL;
 req -x509 — этот параметр указывает, что в команде нужно использовать запрос на подпись сертификата (CSR) X.509. X.509 – это стандарт инфраструктуры открытых ключей, которого придерживаются SSL и TLS в управлении ключами и сертификатами.
-nodes —  этот параметр используется в случае если вы не хотите защищать сертификат паролем. Веб-сервер Apache должен иметь возможность читать файл без вмешательства пользователя, и в нашем случае это будет мешать, так как пароль придется вводить вручную после каждой перезагрузки.
-days 365 — этот параметр устанавливает срок действия сертификата (в данном случае сертификат действителен в течение года).
-newkey rsa:2048 — этот параметр одновременно создает сертификат и ключ. Поскольку ключ, который необходим для подписи сертификата, не был создан ранее, его нужно создать сейчас. Опция rsa:2048 создаст 2048-битный RSA-ключ.
 -keyout —  параметр указывает каталог, в который нужно поместить закрытый ключ.
-out —  с помощью этого параметра указывается каталог, в который нужно поместить сертификат.

После этой строки с запросом на генерацию сертификата откроется командная строка, в которой можно ввести информацию о сайте. 

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

Country Name (2 letter code) [XX]:RU
State or Province Name (full name) []:Russia
Locality Name (eg, city) [Default City]:Youcityname
Organization Name (eg, company) [Default Company Ltd]:none
Organizational Unit Name (eg, section) []:none
Common Name (eg, your name or your server’s hostname) []:yoursiteorip.ru
Email Address []:youmailbox@example.ru

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

Итак, все необходимые компоненты готовы. Теперь нужно настроить виртуальный хост для отображения нового сертификата.
Откройте конфигурационный файл Apache для SSL в текстовом редакторе с привилегиями root:
sudo nano /etc/httpd/conf.d/ssl.conf

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

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

если вы используете другой root-каталог веб-сервера, укажите в этой строке правильный адрес.
DocumentRoot «/var/www/example.com/public_html»

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

ServerName www.yoursiteorip.ru: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://yoursiteorip.ru/

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

Так же хочу отметить, что в последствии, при выпуске полноценного, не самоподписанного сертификата вам просто нужно будет положить их в те же директории на сервере с тем же именем сертификата и ключа — в нашем примере это были пути:

/etc/httpd/ssl/apache.crt

и

/etc/httpd/ssl/apache.key

и соответствующие имена файлов — apache.crt  для файла сертификата и apache.key — для файла ключа.

На этом все, мы справились — настройка SSL для вашего сайта завершена и ваш сервер Apache поддерживает запросы HTTP и HTTPS. Это обезопасит взаимодействие с клиентами, повысит доверие поисковых систем, а так же не позволит посторонним читать межсайтовый трафик.

На сегодня это всё! Подписывайтесь на обновления блога.

2 thoughts to “Создание самоподписанного SSL-сертификата на Apache в CentOS в 4 шага. Просто и наглядно.”

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *