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

Как создать SSL-сертификат на Apache для Ubuntu 14.04


Введение

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

Эти протоколы позволяют безопасно передавать трафик между удаленными сторонами без возможности перехвата и чтения трафика кем-то посередине. Они также играют важную роль в проверке подлинности доменов и серверов в Интернете, устанавливая сервер как доверенный и подлинный центром сертификации.

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

Примечание. Возможно, вы захотите использовать Let’s Encrypt вместо самоподписанного сертификата. Let’s Encrypt — это новый центр сертификации, выпускающий бесплатные сертификаты SSL/TLS, которым доверяют большинство веб-браузеров. Для начала ознакомьтесь с руководством: Как защитить Apache с помощью Let’s Encrypt в Ubuntu 14.04

Предпосылки

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

В этом руководстве мы будем работать как пользователь без полномочий root с привилегиями sudo. Вы можете настроить его, выполнив шаги 1–4 в нашем руководстве по начальной настройке сервера Ubuntu 14.04.

Вам также понадобится установить Apache. Если у вас это еще не установлено и не работает, вы можете быстро исправить это, набрав:

sudo apt-get update
sudo apt-get install apache2

Шаг первый — активируйте модуль SSL

Поддержка SSL на самом деле является стандартной в пакете Ubuntu 14.04 Apache. Нам просто нужно включить его, чтобы использовать преимущества SSL в нашей системе.

Включите модуль, набрав:

sudo a2enmod ssl

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

sudo service apache2 restart

При этом наш веб-сервер теперь может обрабатывать SSL, если мы настроим его для этого.

Шаг второй — создайте самозаверяющий SSL-сертификат

Давайте начнем с создания подкаталога в иерархии конфигурации Apache для размещения файлов сертификатов, которые мы будем создавать:

sudo mkdir /etc/apache2/ssl

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

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

Давайте рассмотрим, что именно это означает.

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

Когда вы нажмете \ENTER, вам будет задан ряд вопросов.

Самый важный запрашиваемый элемент — это строка «Общее имя (например, полное доменное имя сервера или ВАШЕ имя)». Вам следует ввести доменное имя, которое вы хотите связать с сертификатом, или общедоступный IP-адрес сервера, если вы этого не сделаете. иметь доменное имя.

Часть вопросов выглядит примерно так:

<пред>

Ключ и сертификат будут созданы и помещены в ваш каталог /etc/apache2/ssl.

Шаг третий — настройте Apache для использования SSL

Теперь, когда у нас есть сертификат и ключ, мы можем настроить Apache для использования этих файлов в файле виртуального хоста. Вы можете узнать больше о том, как настроить виртуальные хосты Apache здесь.

Вместо того, чтобы основывать наш файл конфигурации на файле 000-default.conf в подкаталоге sites-available, мы собираемся основывать эту конфигурацию на default. -ssl.conf, содержащий некоторую конфигурацию SSL по умолчанию.

Откройте файл с привилегиями root сейчас:

sudo nano /etc/apache2/sites-available/default-ssl.conf

После удаления комментариев файл выглядит примерно так:

<пред>

Это может показаться немного сложным, но, к счастью, нам не нужно беспокоиться о большинстве опций.

Мы хотим установить обычные вещи, которые мы настроили бы для виртуального хоста (ServerAdmin, ServerName, ServerAlias, DocumentRoot и т. д.), а также изменить место, где Apache ищет SSL-сертификат и ключ.

В итоге это будет выглядеть примерно так. Записи, выделенные красным, были изменены из исходного файла:

<пред>

Сохраните и закройте файл, когда закончите.

Шаг четвертый — активируйте виртуальный хост SSL

Теперь, когда мы настроили наш виртуальный хост с поддержкой SSL, нам нужно включить его.

Мы можем сделать это, набрав:

sudo a2ensite default-ssl.conf

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

sudo service apache2 restart

Это должно активировать ваш новый виртуальный хост, который будет обслуживать зашифрованный контент с использованием созданного вами SSL-сертификата.

Шаг пятый — проверьте свою установку

Теперь, когда у вас все готово, вы можете протестировать свою конфигурацию, посетив доменное имя вашего сервера или общедоступный IP-адрес после указания протокола https://, например:

<пред>

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

Это ожидается, так как мы сами подписали наш сертификат. Хотя наш сертификат не будет проверять наш сервер для наших пользователей, поскольку он не взаимодействовал с доверенным центром сертификации, он все равно сможет шифровать связь.

Поскольку это ожидаемо, вы можете нажать кнопку «Все равно продолжить» или любую другую аналогичную опцию в вашем браузере.

Теперь вы перейдете к содержимому в DocumentRoot, которое вы настроили для своего виртуального хоста SSL. На этот раз ваш трафик зашифрован. Вы можете проверить это, нажав на значок замка в строке меню:

Вы можете видеть в средней зеленой части, что соединение зашифровано.

Заключение

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

Если вы планируете запустить общедоступный сайт и нуждаетесь в SSL, вам лучше приобрести сертификат SSL в доверенном центре сертификации.

Если вы хотите узнать больше о защите вашего сервера Linux.

Джастин Эллингвуд