Https не работает Centos 7

Обновлено: 21.11.2024

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

Обновление (браузер не распознает SSL-сертификаты)

1) Я последовал совету @Alex использовать обезвоженный. После того, как я прошел обучение, я в конце концов прошел все этапы, и сертификаты находятся в папке сертификатов.
Посмотрите обезвоженное содержимое папки:

3) Перезапустил Apache:

Однако осталось две проблемы:

Что может быть не так?

Есть способ исправить?

Обновление 2 - браузер проверяет сертификат основного домена на sm.webscraping.pro

Когда я проверил sm.webscraping.pro в онлайн-инструменте проверки SSL, последний вернул мне информацию о сертификате основного домена:

Примечание: в этом результате проверки: Ни одно из распространенных имен в сертификате не совпадает с введенным именем (sm.webscraping.pro).

Похоже, существует конфликт между сертификатом официального центра выдачи SSL (CA) и сертификатом ACME "Automatic Certificate Management Environment". Как решить эту проблему, чтобы оба работали?

sm.webscraping.pro разрешается в 185.221.154.249
Тип сервера: nginx
Сертификату должны доверять все основные веб-браузеры (установлены все правильные промежуточные сертификаты).
Сертификат выдан компанией Sectigo.
Срок действия сертификата истекает через 323 дня.
Ни одно из общих имен в сертификате не совпадает с введенным именем (sm.webscraping.pro). Вы можете получить сообщение об ошибке при доступе к этому сайту в веб-браузере. Подробнее об ошибках несоответствия имен.

Цепь
Общее название: Sectigo RSA Domain Validation Secure Server CA
Организация: Sectigo Limited
Расположение: Солфорд, Большой Манчестер, Великобритания
Действительно с 1 ноября, с 2018 г. по 31 декабря 2030 г.
Серийный номер: 7d5b5126b476ba11db74160bbc530da7
Алгоритм подписи: sha384WithRSAEncryption
Эмитент: USERTrust RSA Certification Authority

Еще одно доказательство:

Обновление 3 — текущая конфигурация VirtualHost

Обновление 4

В /home/admin/conf/web/ я нашел следующее:

Вероятно, создано VestaCP.
Должен ли я поместить сюда сгенерированные сертификаты Let Encrypt?

Обновление 5

Для основного домена у меня есть следующие (используемые Vesta) файлы в /home/admin/conf/web:

Хотя файлы, сгенерированные dehydrated для субдомена, находятся только в /etc/dehydrated/certs/sm.webscraping.pro:

Как правильно сопоставить их для файлов .ca, .crt, .key и .pem с папкой /home/admin/conf/web?

Обновление 6

После комментария @Alex я скопировал fullchain-xxx.pem в ssl.sm.webscraping.pro.crt и privkey-xxx.pem в ssl.sm.webscraping.pro.key в папку /home/admin. /conf/веб-каталог. Затем я добавил их как сертификат и ключ сертификата соответственно в Vesta CP (в разделе SSL вкладки WEB для домена sm.webscraping.pro). См. изображение ниже:

До сих пор нет доказательств работы SSL:

Обновление 7

Я обновил VestaCP и добавил сертификат от CP с помощью Let's Encrypt. На первый взгляд положительный результат:

Все еще проблема с идентификацией SSL:

Почему? Любое предположение о том, когда сертификат SSL распространяется по сети?

В этом пошаговом руководстве используется CentOS 7 и работа с самозаверяющим сертификатом. Самоподписанный вариант отлично подходит для личных сайтов или целей тестирования. Для официальных бизнес-развертываний вам необходимо приобрести SSL-сертификат у надежной компании (например, Digicert, Network Solutions или GlobalSign). Я также предполагаю, что на сервере уже запущен Apache.

Обязательно к прочтению статьи о безопасности

С учетом сказанного давайте начнем процесс.

Установка и использование OpenSSL

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

sudo yum установить mod_ssl openssl

Приведенная выше команда подберет все необходимые зависимости (рис. A).

Рисунок А

Теперь мы сгенерируем ключ SSL с помощью следующих команд:

Создать закрытый ключ

​sudo openssl genrsa -out ca.key 2048

Создать CSR

sudo openssl req -new -key ca.key -out ca.csr

Создать самоподписанный ключ

sudo openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

Теперь нам нужно скопировать вновь созданные файлы в нужные места с помощью следующих команд:

sudo cp ca.crt /etc/pki/tls/certs
sudo cp ca.key /etc/pki/tls/private/ca.key
sudo cp ca.csr /etc/pki /tls/private/ca.csr

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

Файл SSLCertificateFile /etc/pki/tls/certs/ca.crtФайл SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

Наконец, перезапустите демон Apache с помощью команды:

Создать виртуальный хост

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

В качестве примера я использую слово "очаровательный". Вы можете использовать любое имя, которое вам нравится/нужно.

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


ServerAdmin email@address
DocumentRoot "/var/www/html/adorkable/"
ServerName AdorkableDesigns
ServerAlias ​​adorkable
Журнал ошибок /var/www/html /adorkable/error.log


DirectoryIndex index.html index.php
Параметры FollowSymLinks
AllowOverride All
Требовать все предоставленные

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

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

Перезапустите Apache с помощью команды:

Теперь ваш виртуальный хост должен быть виден серверу. Все, что вам нужно сделать, это добавить контент в каталог /var/www/html/adorkable, и все готово.

Быстрый тест

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

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

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

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

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

Чтобы получить более готовое решение для сертификатов, воспользуйтесь бесплатным центром сертификации Let’s Encrypt. Вы можете узнать, как загрузить и настроить сертификат Let’s Encrypt, в руководстве по настройке Apache с сертификатом Let’s Encrypt в CentOS 7.

Предпосылки

Прежде чем приступить к работе с этим руководством, необходимо выполнить несколько шагов.

  • Вам потребуется доступ к серверу CentOS 7 от пользователя без полномочий root с привилегиями sudo. Если вы еще не настроили это, вы можете запустить руководство по начальной настройке сервера CentOS 7, чтобы создать эту учетную запись.
  • Вам также потребуется установить Apache, как описано в шаге 1 руководства Установка веб-сервера Apache в CentOS 7. После выполнения этих шагов вы можете войти в систему под своей учетной записью пользователя без полномочий root через SSH и продолжить обучение.

Шаг 1 — Установка mod_ssl

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

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

Шаг 2. Создание нового сертификата

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

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

Теперь вы можете создать пару самоподписанного ключа и сертификата с помощью 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.

Поскольку вы используете OpenSSL, вам также следует создать сильную группу Диффи-Хеллмана, которая используется при согласовании с клиентами режима Perfect Forward Secrecy.

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

Это может занять несколько минут, но когда это будет сделано, у вас будет сильная группа DH по адресу /etc/ssl/certs/dhparam.pem, которую вы сможете использовать в своей конфигурации.

Шаг 3 — Настройка сертификата

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

Вставьте следующую минимальную конфигурацию VirtualHost:

Обязательно обновите строку ServerName так, как вы собираетесь обращаться к своему серверу. Это может быть имя хоста, полное доменное имя или IP-адрес. Убедитесь, что все, что вы выберете, соответствует общему имени, выбранному вами при создании сертификата.

Настройка параметров безопасного SSL

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

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

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

Есть несколько частей конфигурации, которые вы можете изменить. Во-первых, вы можете добавить предпочитаемый преобразователь DNS для восходящих запросов в директиву преобразователя. Вы использовали Google для этого руководства, но вы можете изменить это, если у вас есть другие предпочтения.

Другие изменения, которые вы внесете, включают удаление +TLSv1.3 и закомментирование директив SSLSessionTickets и SSLOpenSSLConfCmd, поскольку они недоступны в версии Apache, поставляемой с CentOS 7.

Вставьте настройки с сайта после окончания блока VirtualHost:

После внесения этих изменений вы можете сохранить и закрыть файл.

Внутри создайте блок VirtualHost для сопоставления запросов на порту 80. Внутри используйте директиву ServerName, чтобы снова сопоставить ваше доменное имя или IP-адрес. Затем используйте Redirect, чтобы сопоставить любые запросы и отправить их на SSL VirtualHost. Не забудьте включить косую черту в конце:

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

Шаг 4. Применение изменений конфигурации Apache

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

Сначала проверьте файл конфигурации на наличие синтаксических ошибок, введя:

Пока вывод заканчивается на Syntax OK , вы можете продолжать. Если это не является частью вашего вывода, проверьте синтаксис ваших файлов и повторите попытку:

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

Затем убедитесь, что в брандмауэре открыты порты 80 и 443. Если вы не используете брандмауэр, вы можете пропустить этот шаг.

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

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

Теперь вы готовы протестировать свой SSL-сервер.

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

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

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

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

Заключение

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

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

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

Получить сертификат было несложно, а установить его, чтобы Apache мог его использовать, было еще одной «проблемой». По шкале от одного до десяти я оцениваю Linux примерно на три (в хороший день)!

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

Как насчет бесплатных сертификатов? Некоторые фирмы предлагают бесплатные сертификаты, некоторые требуют от вас установки программного обеспечения, которое обновляет сертификат каждые девяносто дней, другие имеют короткий срок службы. Обычно я не трачу деньги, но на пятерку в год, почему бы и нет?

Решение

Ваш поставщик сертификатов пришлет вам ваш сертификат, возможно, он будет поставляться как минимум с одним другим сертификатом. В моем случае он поставлялся с тремя другими сертификатами CA (RootCA и двумя промежуточными сертификатами CA). Если вы не знакомы с сертификатами, вот два правила золотых сертификатов;

  • Вы ДОЛЖНЫ доверять органу (ЦС), который выдал сертификат или выдал сертификат центру сертификации, который выдал сертификат и т. д.
  • ИМЯ в сертификате: обычное имя (CN) или альтернативное имя субъекта (SAN).ДОЛЖЕН совпадать с адресом, на который вы собираетесь.

С этими более дешевыми сертификатами вы обнаружите, что вы доверяете ЦС, и этот ЦС выдает другой сертификат ЦС (подчиненному ЦС), который выдает другой сертификат ЦС (подчиненному ЦС), и этот ЦС выдает ваш сертификат. Все эти сертификаты образуют «цепочку», и она выглядит так;

Хорошо, почему это важно? Что ж, чтобы доверять вашему сертификату, ваши посетители (и Apache) должны иметь возможность видеть все сертификаты в этой цепочке, вплоть до сертификата RootCA вверху (которому они будут доверять, иначе нет особого смысла их продавать!)

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

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

Перед тем, как вы начнете, вам может потребоваться установить mod_ssl. Для этого будет использована команда yum install mod_ssl 🙂

Сначала вам нужно скопировать все файлы в CentOS. Я создал папку в '/etc/ssl/' с именем 'localcertificates' и скопировал в сертификат домена ключевой файл (который был сгенерирован, когда я сделал CSR - Смотрите ссылку выше). И я скопировал все сертификаты ЦС. (Для этого я использую FileZilla, потому что он бесплатный и простой в использовании).

Теперь войдите на свой сервер CentOS через SSH и перейдите в этот каталог, затем используйте команду «CAT», чтобы создать пакет сертификатов со всеми вашими сертификатами ЦС (обратите внимание на порядок: SubCA2 > SubCA1 > RootCA). Примечание. Ваши сертификаты, вероятно, будут иметь другие имена.

Найдите часть файла с надписью «Прослушайте *.80» и поместите под ней строку с надписью «Прослушайте *.443».

Прокрутите до конца файла и вставьте следующее (измените имена файлов, чтобы они соответствовали вашим собственным).

Примечание: Убедитесь, что папка Logs существует в /var/www, если вы используете те же пути, что и я! Кроме того, в новых версиях Apache SSLCertificateChainFile изменится на SSLCACertificatePath.

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