Настройка SSL Ubuntu Apache

Обновлено: 21.11.2024

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

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

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

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

Самозаверяющий сертификат может подойти, если у вас нет доменного имени, связанного с вашим сервером, и в случаях, когда зашифрованный веб-интерфейс не открыт для пользователя. Если у вас есть доменное имя, во многих случаях лучше использовать сертификат, подписанный ЦС. Узнайте больше о том, как настроить бесплатный доверенный сертификат, в нашем руководстве «Как защитить Apache с помощью Let’s Encrypt в Ubuntu 18.04».

Предпосылки

Для выполнения этого руководства вам потребуется:

  • Один сервер Ubuntu 18.04 с пользователем без полномочий root, настроенным с привилегиями sudo и включенным брандмауэром. Вы можете настроить такую ​​учетную запись пользователя, выполнив нашу первоначальную настройку сервера с Ubuntu 18.04
  • Установлен веб-сервер Apache. Если вы хотите установить весь стек LAMP (Linux, Apache, MySQL, PHP) на свой сервер, вы можете следовать нашему руководству по настройке LAMP в Ubuntu 18.04. Если вам нужен только веб-сервер Apache, пропустите шаги, относящиеся к PHP и MySQL.

После выполнения предварительных требований перейдите к следующему шагу.

Шаг 1. Создание SSL-сертификата

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

Вы можете создать пару самоподписанного ключа и сертификата с помощью одной команды OpenSSL:

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

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

Как указывалось ранее, эти параметры будут создавать как файл ключа, так и сертификат. Вам будет задано несколько вопросов о вашем сервере, чтобы правильно встроить информацию в сертификат.

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

Весь список подсказок будет выглядеть следующим образом:

Оба созданных вами файла будут помещены в соответствующие подкаталоги в /etc/ssl .

Шаг 2. Настройка Apache для использования SSL

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

Вы сделаете это, внеся несколько изменений в конфигурацию:

  1. Создайте фрагмент конфигурации, чтобы указать надежные настройки SSL по умолчанию.
  2. Измените прилагаемый файл виртуального хоста SSL Apache, чтобы он указывал на сгенерированные сертификаты SSL.
  3. (Рекомендуется) Измените незашифрованный файл виртуального хоста, чтобы автоматически перенаправлять запросы на зашифрованный виртуальный хост.

Когда вы закончите, у вас будет безопасная конфигурация SSL.

Создание фрагмента конфигурации Apache с параметрами надежного шифрования

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

Создайте новый фрагмент в каталоге /etc/apache2/conf-available. В этом примере мы создадим файлы с помощью nano и назовем файл ssl-params.conf, чтобы было понятно его назначение. Не стесняйтесь использовать предпочитаемый вами текстовый редактор:

Чтобы безопасно настроить Apache SSL, мы адаптируем рекомендации от Cipherlist.eu. Cipherlist.eu – это полезный и понятный ресурс для понимания настроек шифрования, используемых в популярном программном обеспечении.

Примечание. Эти параметры, предлагаемые Cipherlist.eu, обеспечивают надежную защиту. Иногда это происходит за счет большей совместимости клиентов. Если вам нужна поддержка старых клиентов, существует альтернативный список, доступ к которому можно получить, щелкнув ссылку на странице с надписью «Да, дайте мне набор шифров, который работает с устаревшим/старым программным обеспечением». При желании вы можете заменить этот список содержимым следующего примера блока кода.

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

Для ваших целей скопируйте предоставленные настройки полностью. Однако вы внесете одно небольшое изменение, отключив заголовок Strict-Transport-Security (HSTS).

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

Теперь вставьте конфигурацию в файл ssl-params.conf:

Сохраните и закройте файл, когда закончите. Если вы используете nano , вы можете сделать это, нажав CTRL + X , затем Y и ENTER .

Изменение файла виртуального хоста Apache SSL по умолчанию

Далее вы измените /etc/apache2/sites-available/default-ssl.conf , файл виртуального хоста Apache SSL по умолчанию. Если вы используете другой файл блока сервера, замените его имя в следующих командах.

Прежде чем начать, создайте резервную копию исходного файла виртуального хоста SSL:

Теперь откройте файл виртуального хоста SSL, чтобы внести изменения:

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

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

После внесения этих изменений блокировка вашего сервера должна привести к следующему:

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

Чтобы настроить незашифрованный файл виртуального хоста для перенаправления всего трафика на шифрование SSL, откройте файл /etc/apache2/sites-available/000-default.conf:

В блоках конфигурации VirtualHost добавьте директиву Redirect, направляющую весь трафик на SSL-версию сайта:

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

Шаг 3. Настройка брандмауэра

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

Просмотрите список доступных профилей, выполнив следующие действия:

Вывод должен быть следующим:

Вы можете просмотреть текущую настройку, проверив статус:

Подтвердите изменения, проверив статус:

Теперь вы успешно разрешили трафик Apache через брандмауэр.

Шаг 4 — Включение изменений в Apache

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

Включите mod_ssl , модуль Apache SSL и mod_headers , необходимые для некоторых настроек во фрагменте кода SSL, с помощью команды a2enmod:

Затем включите виртуальный хост SSL с помощью команды a2ensite:

Вам также потребуется включить файл ssl-params.conf, чтобы считывать установленные вами значения:

На этом этапе ваш сайт и необходимые модули включены. Убедитесь, что в ваших файлах нет синтаксических ошибок с помощью теста:

Если все сделано успешно, вы получите следующие результаты:

Первая строка — это сообщение о том, что директива ServerName не установлена ​​глобально. Если вы хотите избавиться от этого сообщения, вы можете установить для ServerName доменное имя или IP-адрес вашего сервера в /etc/apache2/apache2.conf. Это необязательно, так как сообщение не причинит вреда.

Если в ваших выходных данных указано «Синтаксис в порядке», в вашем файле конфигурации нет синтаксических ошибок. Теперь вы можете безопасно перезапустить Apache, чтобы изменения вступили в силу:

Вы внесли изменения, и теперь вы будете тестировать свой SSL-сервер.

Шаг 5 — Тестирование шифрования

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

Это ожидаемо и нормально. Нас интересует только аспект шифрования нашего сертификата, а не сторонняя проверка подлинности нашего хоста. Нажмите ДОПОЛНИТЕЛЬНО, а затем ссылку, чтобы перейти к вашему хосту в любом случае:

Вы должны перейти на свой сайт. В адресной строке браузера у вас будет замок с «x» над ним. Это означает, что сертификат не может быть проверен. Он по-прежнему шифрует ваше соединение.

Если в результате появится тот же значок, это означает, что ваша переадресация сработала правильно.

Шаг 6. Переход на постоянную переадресацию

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

Снова откройте файл конфигурации блока сервера:

Найдите строку перенаправления, которую вы добавили ранее. Добавьте постоянную в эту строку, которая изменяет переадресацию с временной переадресации 302 на постоянную переадресацию 301:

Сохраните и закройте файл.

Проверьте конфигурацию на наличие синтаксических ошибок:

Когда будете готовы, перезапустите Apache, чтобы сделать перенаправление постоянным:

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

Заключение

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

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

Оглавление

Предпосылки

  • Сервер с Ubuntu 20.04 и Apache.
  • Пользователь root или обычный пользователь с привилегиями sudo.

Шаг 1. Войдите через SSH и обновите пакеты

Войдите в систему Ubuntu 20.04 VPS через SSH:

Замените «sshuser» на пользователя с правами sudo или root. Кроме того, замените «IP_Address» и «Port_Number» соответствующим IP-адресом вашего сервера и портом SSH.

После входа в систему вы можете проверить, установлена ​​ли на вашем сервере правильная версия Ubuntu 20.04, с помощью следующей команды:

Вы должны получить следующий вывод:

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

Это обеспечивает совместимость между пакетами.

Шаг 2. Включите Mod SSL

Прежде чем начать, нам нужно включить модуль Apache SSL, запустив эту команду:

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

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

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

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

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

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

Давайте отредактируем новый файл.

в первой строке с

Затем добавьте эти три строки:

Сохраните файл и выйдите.

После этого нам нужно включить SSL-версию вашего сайта. Мы можем запустить эту команду, чтобы включить сайт:

Наконец, проверьте конфигурацию apache2, выполнив эту команду:

Если все в порядке, вы увидите сообщение «Syntax OK», вы можете перезапустить Apache.

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

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

Apache – это наиболее широко используемый веб-сервер в мире, обеспечивающий работу более 60 % всех активных веб-сайтов в Интернете. Это бесплатное программное обеспечение с открытым исходным кодом, которое любой может использовать для обслуживания статических или динамических сайтов пользователями. Ubuntu — это операционная система, основанная на Linux, которая широко используется разработчиками, студентами, исследователями и инженерами по всему миру. Его предпочитают из-за его цены (бесплатно), гибкости и долговечности. В этом руководстве рассказывается, как легко настроить и установить SSL-сертификат на веб-сервере Apache с помощью интерфейса командной строки ОС Ubuntu.

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

1: На сервере должен быть установлен Apache.

Как установить Apache на свой сервер:

а. Обновите свой сервер -

b: Установите Apache —

c: проверьте установку веб-сервера Apache

Либо запустите команду -

Если вы получили ACTIVE в своем выводе, все готово.

ИЛИ

Шаг 1. Создание CSR и закрытого ключа с помощью OpenSSL

Сначала вам нужно будет сгенерировать закрытый ключ и CSR (запрос на подпись сертификата), используя библиотеку OpenSSL по умолчанию, предоставляемую Apache.
Сначала мы собираемся создать каталог для хранения всех наших файлов сертификатов, включая наш закрытый ключ и CSR.

1: Чтобы создать каталог, введите следующую команду:

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

2: введите следующую команду, чтобы сгенерировать закрытый ключ и CSR —

При этом будут созданы закрытый ключ и CSR с именами server.key и server.csr соответственно; в каталоге шифрования.

После этого вам будет предложено ввести следующие данные, касающиеся вашего CSR:-

Название страны (двухбуквенный код) [AU]: введите двухбуквенное сокращение для вашей страны.
Название штата или провинции (полное название) [Some-State]: Полное название штата.
Название организации (например, компания) [Internet Widgits Pty Ltd]: Название местности (например, город) [] : Полное название города, без сокращений
Название организации (например, компания) [Internet Widgits Pty Ltd]: Если вы занимаетесь бизнесом; Введите название вашего юридического лица. Если вы не являетесь юридическим лицом, любое введенное значение не будет использоваться в вашем сертификате.
Название организационного подразделения (например, раздел) []: если вы представляете бизнес; Напишите соответствующее подразделение вашей компании. Лучше всего использовать что-то общее, например «IT».
Общее имя (например, полное доменное имя сервера или ВАШЕ имя) []: введите ваше доменное имя Siddiqui Ammar
Опубликовано: 10-06-2021

Следующее руководство.
Руководство по установке Apache в Debian SSL

Apache – это наиболее широко используемый веб-сервер в мире, обеспечивающий работу более 60 % всех активных веб-сайтов в Интернете. Это бесплатное программное обеспечение с открытым исходным кодом, которое любой может использовать для обслуживания статических или динамических сайтов пользователями. Debian, также известный как Debian GNU/Linux, — это дистрибутив Linux…

Ubuntu — это операционная система Linux на основе Debian, которая на сегодняшний день является одним из самых популярных дистрибутивов Desktop Linux. С первым выпуском Ubuntu, выпущенным в октябре 2004 года, обновленные версии, как и ожидалось, будут выпускаться каждые шесть месяцев.

Чтобы установить SSL-сертификат на сервер Ubuntu, сначала необходимо загрузить файлы основного, промежуточного и корневого сертификатов, которые вы получите по электронной почте от своего центра сертификации (ЦС). После загрузки этих файлов сертификатов вам необходимо сгенерировать запрос на подпись сертификата (CSR), что можно легко сделать с помощью нашего инструмента CSR.

Шаги по установке / включению SSL-сертификата в Ubuntu с использованием Apache

Шаг 1. Скопируйте файлы сертификатов

Для начала скопируйте файлы основного (yourdomain.crt) и промежуточного сертификата (abcCA.crt) в каталог сервера Ubuntu, где вы собираетесь хранить все файлы сертификатов и ключей.

Шаг 2. Отредактируйте файл Apache .config

(1) Обычно вы можете найти файл конфигурации Apache Ubuntu для вашего SSL-сайта в /etc/apache2/sites-enabled/your_site_name

(2) Но если вы не найдете этот файл .config в папке «sites-enabled», вам нужно выполнить команду sudo a2ensite your_site_name.

(3) Найдя файл, откройте его в любом текстовом редакторе

(4) Чтобы сделать ваш сайт доступным только по защищенному протоколу, вам необходимо настроить блок Virtual Host.

Шаг 3. Настройка блока виртуального хоста

Ваш блок «Виртуальный хост» будет выглядеть примерно так:

(1) В блоке виртуального хоста необходимо настроить файл сертификата SSL, файл ключа и файл цепочки.

(2) Теперь измените следующие имена файлов в соответствии с вашим SSL-сертификатом и внесите соответствующие изменения:

(i) SSLCertificateFile: файл вашего сертификата (yourdomain.crt)

(ii) SSLCertificateKeyFile: файл вашего ключа (созданный во время создания CSR)

(iii) SSLCertificateChainFile: файл промежуточного сертификата (CA.crt)

Примечание. Попробуйте использовать SSLCACertificateFile вместо , если директива SSLCertificateFile не работает.

Сохраните данные после редактирования блока VirtualHost.

Шаг 4. Протестируйте файл Apache .Config и перезапустите

После сохранения файла .config необходимо проверить этот файл на наличие ошибок, выполнив следующую команду:

apachectlConfigtest

Если ваш файл .config работает нормально, последним шагом будет перезапуск сервера Apache с помощью следующих команд:

остановить apachectl

запуск apachectl

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

(I) Если SSL установлен правильно, вы сможете увидеть данные своего сертификата.

(II) Если он не установлен должным образом, мы рекомендуем вернуться к шагу 1 и повторить все заново.

Важный ресурс

Купите SSL-сертификаты EV и сэкономьте 51 %

Аутентифицируйте свою компанию с помощью сертификата EV. Получите SSL-сертификат с расширенной проверкой по самым низким ценам от надежных брендов SSL.
Купите дешевые SSL-сертификаты EV за 69,85 долл. США и сэкономьте 51 %

Читайте также: