- Настройте Apache + SSL для запуска веб-сайта через HTTPS
- Шаг 1. Создайте сертификат
- Шаг 2: Установка модуля SSL для Apache
- Шаг 3: Настройка Apache
- Шаг 4: Проверьте, работает ли она
- Шаг 5. Настройте перенаправление
- В файле конфигурации
- В .htaccess
- Установка модуля перезаписи
- Apache + NGINX
- Apache SSL: переход с Apache на HTTPS
- Нужен ли вам HTTPS?
- SSL-сертификаты
- Как сгенерировать SSL-сертификат в Windows
- Как включить SSL-сертификаты для Apache в Windows
- Устранение неполадок
- Статьи по теме:
- Комментарии
Настройте Apache + SSL для запуска веб-сайта через HTTPS
Это руководство написано для операционных систем на базе UNIX.
Шаг 1. Создайте сертификат
для производственный сервер, сертификат должен быть получен от доверенного центра сертификации, либо корпоративного, либо коммерческого. Или получите бесплатный от Let’s Ecnrypt.
Вы можете создать самозаверяющий сертификат для своей тестовой среды. Для этого сначала перейдите в свою рабочую папку.
а) в Red Hat/CentOS:
б) в Debian/Ubuntu:
c) на FreeBSD:
Создайте папку сертификата и откройте ее:
mkdir ssl; cd ssl
И сгенерировать сертификат:
openssl req -new -x509 -days 1461 -nodes -out cert.pem -keyout cert.key -subj «/C=RU/ST= SPb /L=SPb/O=Global Security/OU=IT Department/ CN=test.dmosk.local/CN=test»
* в данном примере открытый и закрытый ключ создаются для 4 лет ( 1461 дней); Значения параметров subj могут быть произвольными в пределах тестов.
Шаг 2: Установка модуля SSL для Apache
Перед установкой модуля выполните команду:
apachectl -M ssl_module libexec/apache24/mod_ssl. Я
.
Включите etc/apache24/extra/httpd-ssl.conf
.
И прокомментируйте следующие строки:
#
#SSLRandomSeed startup embed
# Embedded соединение SSLRandomSeed
#
Для применения конфигурации необходимо перезапустить веб-сервер одной из команд:
systemctl restart httpd
systemctl restart apache2
service restart apache2
* первый обычно используется в системах на основе RPM, второй — DEB, а третий — BSD.
Шаг 3: Настройка Apache
Выйдите из папки ssl:
Откройте файл конфигурации виртуального домена.
* где site.conf — конфигурационный файл для конкретного сайта
Добавьте в открытый файл следующее:
ServerName site.ru
DocumentRoot /var/www/apache/data
SSLEngine v
SSLCertificateFile ssl/cert.pem
SSLCertificateKeyFile ssl/cert.key
#SSLCertificateChainFile ssl/cert.ca-package
- имя_сервера — домен сайта;
- DocumentRoot : расположение файлов сайта в системе;
- SSLCertificateFile и SSLCertificateKeyFile — пути к файлам ключей, созданным на шаге 1;
- SSLCertificateChainFile — при необходимости путь к цепочке сертификатов (если мы используем несамоподписанный сертификат).
Проверьте конфигурацию в Apache:
Перезагрузите конфигурацию из Apache:
Шаг 4: Проверьте, работает ли она
Откройте браузер и перейти на наш сайт, добавив https://. При использовании самоподписанного сертификата (как в нашем случае) браузер выдает предупреждение о том, что передача данных не защищена. Подтверждаем свое намерение открыть сайт. Если все работает, переходите к шагу 5.
Если сайт не работает, мы попытаемся найти причину в файле журнала. Обычно он находится в каталоге /var/log/apache или /var/log/httpd .
.
Шаг 5. Настройте перенаправление
Чтобы все http запросы автоматически перенаправлялись на https необходимо настроить перенаправление. Это можно сделать несколькими способами.
В файле конфигурации
Откройте файл конфигурации виртуального домена (как в шаге 3) и добавьте следующее:
ServerName site .ru
RewriteEngine On
RewriteCond %
RewriteRule (.*) https://%
* В конкретном примере мы перенаправляем все запросы на сайт site.ru .
** Обратите внимание, что если у вас уже есть VirtualHost *:80 для вашего собственного сайта, вы должны прокомментировать или изменить его.
В .htaccess
Установка модуля перезаписи
Для работы перенаправления в Apache необходимо установить модуль перезаписи.
а) в CentOS откройте конфигурационный файл и проверьте наличие строки:
LoadModule rewrite_module modules/mod_rewrite.so
* да нет, добавить; если закомментировано, удалить комментарий.
systemctl restart httpd
systemctl restart apache2
Apache + NGINX
При использовании веб-сервера, основанного как на Apache, так и на NGINX, обычно последний выглядывает. В этом случае он будет отвечать на http-запросы, и в этом случае вам нужно будет настроить SSL на NGINX.
Как настроить Apache для работы через HTTPS (SSL)
Источник
Apache SSL: переход с Apache на HTTPS
Нужен ли вам HTTPS?
Протокол HTTPS позволяет передавать данные между сайтом и пользователем в зашифрованном виде, то есть посторонние лица не могут видеть содержание передаваемых данных и изменять его.
Веб-сервер Apache поддерживает HTTPS. Вам нужен SSL-сертификат для настройки HTTPS на Apache. Более конкретно, «сертификат SSL» включает в себя закрытый ключ и открытый ключ (сертификат). В дополнение к ключам SSL, сертификатам центра сертификации и корневому сертификату также может быть дополнительно отправлен корневой сертификат.
SSL-сертификаты
SSL-сертификаты можно разделить на два типа: действительные и самоподписанный.
Вы можете сгенерировать SSL-сертификат на своем компьютере. Его также можно сгенерировать для любого доменного имени. Но веб-браузеры не доверяют таким сертификатам. Поэтому, если вы откроете сайт, защищенный таким сертификатом, веб-браузер напишет ошибку, что сертификат получен из ненадежного источника и запретит открывать этот сайт или предложит перейти на сайт на свой страх и риск. Это так называемые «самоподписанные сертификаты». Чтобы браузер не выдавал ошибку о недоверенном сертификате, его необходимо добавить в список доверенных сертификатов. Эти сертификаты подходят для тестирования веб-сервера и обучения настройке веб-сервера для работы с SSL и HTTPS. Такой сертификат можно использовать i на сайте, доступ к которому имеет ограниченный круг лиц (несколько человек), например для сайтов в локальной сети. В этом случае каждый может добавить сертификат в доверенные.
Для реального сайта такой сертификат не подходит.
Для работы требуется действующий сертификат, его можно получить в два способа:
1) получить пробный сертификат на 3 месяца (потом его можно будет продлить)
2) купить сертификат; в этом случае он действителен в течение одного года или более
Действительный сертификат отличается от самозаверяющего сертификата тем, что подлинность этого сертификата проверяется сторонней службой. На самом деле вы платите за эту услугу сертификата, а не за выдачу сертификата.
Эта статья посвящена тому, как настроить Apache в Windows для работы с HTTPS , она покажет, как прикрепить SSL-сертификаты к Apache в Windows . Поэтому для целей тестирования и обучения будет достаточно самоподписанного сертификата.
Как сгенерировать SSL-сертификат в Windows
Мой веб-сервер установлен в папке C:\Server\bin \Apache24 , поэтому, если он у вас в другом каталоге, измените команды в соответствии с вашими условиями.
Откройте командную строку Windows ( Win+x , затем выберите » Windows PowerShell (Admin) «). В командной строке введите команды:
Когда вы введете последнюю команду, подсказки появятся на английском языке. Далее следует ваш перевод.
Вам будет предложено предоставить информацию в заявке на сертификат. То, что вы вводите, называется Отличительное имя или DN. Есть только несколько полей, которые можно оставить пустыми. Некоторые поля будут иметь значения по умолчанию. Если вы введете «.», поле останется пустым.
Двухбуквенное название страны (двухбуквенный код)
Название штата или провинции/провинции (полное название)
Название местоположения (например, город)
Организационная единица (например, отдел)
Общее имя ( например, полное доменное имя сервера или ВАШЕ имя). Это самая важная часть: здесь нужно ввести доменное имя. Вы можете ввести локальный хост.
Теперь выполните команду:
В результате в каталоге C:\Server\bin\Apache24\bin\ должны появиться три новых файла:
Z из которых нам нужны только два:
Как включить SSL-сертификаты для Apache в Windows
При использовании сертификатов для настройки реального веб-сайта удобнее создать виртуальный хост со следующими настройками:
Чтобы настроить использование SSL на локальном веб-сервере Apache в Windows, следуйте приведенным ниже инструкциям (в моем случае веб-сервер устанавливался по этой инструкции, если не в вашем, настройте пути к файлам).
V C :\Server\ , создайте новую папку certs и переместите файлы localhost.key и localhost.crt .
там
В каталоге C:\Server\bin\Apache24\conf\ откройте файл httpd.conf с Текстовый редактор. Добавьте следующие строки:
Обратите внимание, что вам может потребоваться изменить следующие директивы
- DocumentRoot : введите путь к сайтам на сервере
- ServerName : введите имя вашего хоста, если не localhost
Обратите внимание, что мы не просто поместили эти строки в файл конфигурации, а обернули их в оболочку VirtualHost . Дело в том, что если этого не произойдет, то директива SSLEngine on включит SSL для всего веб-сервера, и даже при попытке открытия страниц на 80-м порту эти подключения будут считаться HTTPS, что вызовет ошибка «Неверный запрос. Ваш браузер отправил запрос, который сервер не понял». По этой причине данная конфигурация размещена в контейнере виртуального хоста. Обратите внимание, что используется ключевое слово _default_ , т.е. будут собираться все запросы на порт 443 здесь, если они не для другого хоста, который также настроен, то есть при желании можно создать несколько виртуальных хостов для работы с HTTPS, если указать IP хоста или * вместо _default_ (звездочка).
Затем сохраните изменения, закройте файл и перезапустите веб-сервер.
Чтобы проверить сделанные изменения, перейдите на https://localhost/ (протокол HTTPS ) Поскольку сертификат является самоподписанным, появится следующее сообщение:
Сертификаты, подписанные их владельцем, не являются доверенными, и эту ошибку нельзя устранить без добавления этих сертификатов в доверенные. сертификаты. Чтобы продолжить, нажмите » Еще continue «.
Как и у меня, необходимо покупать действующие сертификаты или использовать пробные сертификаты. В чем прикол использования тестовых сертификатов? сайты с такими тестовыми сертификатами живут годами.В современных хостингах настроено автоматическое подключение и продление таких сертификатов,это очень удобно.Хосты обычно предоставляют ряд SSL сертификатов совершенно бесплатно с автоматическим продлением,но за за небольшую плату (10 рублей в месяц) можно подключить тестовые сертификаты для любого количества сайтов. Пример такого хостинга здесь.
Устранение неполадок
При определенных условиях может появиться следующая ошибка возникает:
Главное сообщение в первой строке: Невозможно открыть C:\Program Files\Common Files\SSL/openssl.cnf для чтения, Нет такого файла или каталога — означает, что ошибка чтения файла C:\Program Files\Common Files\SSL/ openssl.cnf , так как он отсутствует.
сб. ubor openssl.cnf поставляется с самим веб-сервером Apache и находится в папке conf . Поэтому есть несколько вариантов исправления этой ошибки. Например, вы можете создать нужные папки и скопировать туда этот файл. Но можно сделать проще: в момент создания сертификатов установить переменную окружения OPENSSL_CONF и указать правильный путь к содержащемуся в ней файлу.
Также следует переключиться из PowerShell в обычную командную строку Windows, потому что в противном случае переменная среды почему-то не установлена. Предположим, что сервер находится в папке C:\Server\bin\Apache24\bin\ , тогда файл openssl.cnf находится по пути C:\ Сервер \bin \ Apache24\ conf\openssl.cnf , в данном случае исправить Невозможно открыть C:\Program Files\Common Files\SSL/openssl.cnf для чтения, нет такого файла или каталога ошибка, запустите :
Измените пути в этих командах, чтобы они соответствовали структуре вашей папки.
Статьи по теме:
- «Вы говорите простой HTTP с SSL -enabled server port» ошибка (РЕШЕНО) (100%)
- Apache для Windows (51,2%)
- Как запустить Apache в Windows (51,2%)
- Документация по Apache на русском ( 51,2%)
- Как подключить PHP к Apache в Windows ( 51,2%)
- Как проверить конфигурационный файл Apache (СЛУЧАЙНО — 51,2%)
Комментарии
Статья не помогла. Очень важно прикрепить к статье файл openssl.cnf, который должен быть собственно прописан в переменной окружения OPENSSL_CONF. Сертификат такого типа не имеет смысла, потому что вам нужно добавить исключение, и он все еще находится в самых надежных браузерах. Такой сертификат не подписан на домене, поэтому не имеет смысла.
Очень важно прикрепить openssl.cnf,
к статье
Этот файл предоставляется с веб-сервер. Зачем помещать его здесь?
, который на самом деле должен быть установлен в переменной среды OPENSSL_CONF.
Посмотрите внимательно на команды: файл добавляется в переменную окружения. Исключительно. Он также используется один раз.
Такой сертификат не имеет смысла, потому что вы должны добавить исключение даже в самых популярных браузерах. верный. Указанный сертификат не подписан на домен, поэтому не имеет смысла.
Это в середине статьи о действительных самозаверяющих сертификатах. Вы просто упускаете суть. Сертификат не является «подписанным доменом». Домен указан в сертификате. Сертификат не подписан службой, уполномоченной проверять действительность сертификатов; нет смысла переписывать из статьи, там все есть.
Что не помогло? Почему браузеры не принимают самоподписанные сертификаты? Виновата ли эта статья?
Никто не запрещает вам купить действующий сертификат для своего домена и прописать его в настройках веб-сервера. Все веб-браузеры прекрасно его примут.
Эта статья предназначена для тех, кто хочет попрактиковаться и посмотреть, как настроить SSL-сертификаты на веб-сервере Apache в Windows. Или для тех, кто уже купил действующий сертификат.
Обошлись без сертификата, теперь приходится с высунутым языком ходить по всевозможным хостингам в поисках хостинговой компании с дешевым или бесплатным SSL.
Спасибо за подробную статью!!
Если у кого-то с apache не запускается; закомментировать строку «Слушать 443»; по умолчанию Apache его слушает.
Я также закомментировал строку «LoadModule ssl_module modules/mod_ssl.so», потому что выше в конфигурация уже установлена по умолчанию.
Ура! Все верно сказано: видимо изменения связаны с обновлением сервера. Я обновлю статью, чтобы не было проблем у других пользователей.
Спасибо большое! Такая подробная статья, а воды нет! Все работало! Установил Apache, PHP, Mysql (по этой статье
), SSL (по текущей статье), все подключено, все работает. В последнее время перестали работать различные сборки веб-сервера для разработчиков (в них часто содержатся старые версии продуктов, и при обновлении одного компонента перестает работать весь пакет). Установил сейчас все с новыми и обновленными версиями, сэкономил кучу времени благодаря вашему труду, еще раз спасибо!
Статья помогла, правда закрутилась только после установки OPENSSL_CONF.
Я создал действительный сертификат для локального хоста, используя mkcert в Windows.
Все работает, но было бы здорово, если бы Apache мог генерировать валидность SSL, но как?
Также было бы здорово получить доступ к одному и тому же порту через http и https..
Также было бы здорово получить доступ к одному и тому же порту через http и https.
Это практически невозможно. Каждый протокол использует виртуальный хост со своими настройками.
Ну, это вообще-то возможно)) Но тогда нужно создать два хоста и каждый из них будет иметь свое имя и соответственно свои настройки. В качестве хоста можно выбрать любое имя, например site1.loc, site2.loc, site.home и любое другое. Один из этих хостов на порту 80 запустится HTTP, а второй хост будет настроен на порт 80 для обслуживания HTTPS. Если вы действительно боретесь с этим, я дам вам ссылки
Все работает, но все равно было бы неплохо, если бы Apache мог генерировать валидность SSL, но как?
Добавьте сгенерированный сертификат в доверенные, и появится зеленый замок, но только на том компьютере, где вы его добавили. Либо сгенерируйте сертификат сервера, используя корневой сертификат, добавленный в доверенные (первый способ проще). Я дам вам ссылки, если вы действительно заинтересованы.
Нет другого способа получить действующий SSL для локального хоста. Вы должны понимать, что в этом суть, что никто не может генерировать сертификаты просто так. Вы можете получить (даже бесплатно) сертификат на публичный адрес (домен), которым владеете. И подлинность этого сертификата будет проверена третьей стороной.
Генерация доверенного сертификата выглядит следующим образом (технические детали, такие как генерация ключа, опущены, перечислены только важные для нас моменты) :
- Я отправляю запрос на генерацию сертификата для моего домена, запрос содержит адрес домена
- Третья сторона присылает мне строку, которую мне нужно поместил в свой домен, я поместил его
- Затем третья сторона посещает мой домен (веб), читает строку и проверяет ее правильность. Это означает, что этот домен фактически принадлежит лицу, выдавшему запрос на сертификат
- Мне выдан сертификат третьим лицом
- Я добавляю сертификат в конфигурацию сервера
- Веб-браузер посетителя «видит», кто выдал сертификат, и спрашивает третью сторону: «Действительно ли такой сертификат был выдан для этого домена?»
- Третья сторона отвечает «да, все в порядке»
- Веб-браузер пользователя начинает доверять этому сертификату
Допустим, я хочу сертификат для домена localhost.
На третьем этапе описанного процесса есть затычка: третья сторона не может получить доступ к домену localhost, чтобы убедиться, что домен действительно принадлежит мне, потому что это мой домен.локальный . У 6 миллиардов человек есть собственный локальный сервер, а у некоторых их больше одного. Из-за этого невозможно выдать действительные сертификаты для локальных имен.
И если третья сторона предоставила «доверенные» сертификаты без проверки или если на вашем компьютере можно было сгенерировать действительные сертификаты для любого имени. , то это как выдавать болтающиеся замки, которые можно открывать любым ключом или вообще без ключа — не то чтобы не было смысла городить этот огород, тогда было бы проще без всяких сертификатов, потому что не было бы укажите в них.
<31 > Источник