Вопрос или проблема
Конфигурация системы
- ubuntu14.04 (64bit)
- XAMPP 1.8.3-5
- Apache/2.4.10
(Unix) OpenSSL/1.0.1i PHP/5.5.15 mod_perl/2.0.8-dev Perl/v5.16.3
- Apache/2.4.10
Я прочитал о новых функциях apache 2.4
Директива NameVirtualHost
Больше не требуется и теперь устарела.
Поэтому вместо NameVirtual host я пробовал другие виртуальные хосты на основе ip.
Следующие изменения я внес для работы с
httpd.conf
расскомментировал строку Include внутри блока <IfModule ssl_module>
<IfModule ssl_module>
<IfDefine SSL>
Include etc/extra/httpd-ssl.conf
</IfDefine>
</IfModule>
httpd-ssl.conf
создал SSL сертификат apache и добавил журналы на соответствующее место
<VirtualHost localhost:443>
DocumentRoot "/opt/lampp/htdocs/wsdl"
ServerName wsdl.local
ServerAlias wsdl.local
ServerAdmin [email protected]
ErrorLog "/opt/lampp/logs/wsdl_error_log"
TransferLog "/opt/lampp/logs/wsdl_access_log"
SSLEngine on
SSLCertificateFile "/opt/lampp/apache2/ssl/wsdl.crt"
SSLCertificateKeyFile "/opt/lampp/apache2/ssl/wsdl.key"
</VirtualHost>
вот файл журнала ошибок
wsdl_error_log
[Fri Nov 21 15:43:12.001231 2014] [ssl:warn] [pid 5322] AH01906: wsdl.local:443:0 серверный сертификат является сертификатом CA (BasicConstraints: CA == TRUE !?)
[Fri Nov 21 15:43:12.001350 2014] [ssl:warn] [pid 5322] AH01909: wsdl.local:443:0 серверный сертификат НЕ включает идентификатор, который совпадает с именем сервера
[Fri Nov 21 15:43:13.001886 2014] [ssl:warn] [pid 5323] AH01906: wsdl.local:443:0 серверный сертификат является сертификатом CA (BasicConstraints: CA == TRUE !?)
[Fri Nov 21 15:43:13.001960 2014] [ssl:warn] [pid 5323] AH01909: wsdl.local:443:0 серверный сертификат НЕ включает идентификатор, который совпадает с именем сервера
Моя проблема следующая
http://localhost
>> Неправильный запросhttps://localhost/wsdl/
>> не работаетhttps://192.168.xx.xx/
>> Сбой безопасного соединения (Код ошибки: ssl_error_rx_record_too_long)https://192.168.xx.xx/wsdl/
>> Ошибка SSL соединения
в то время как
http://192.168.xx.xx/
>> работает (как в стандартном xampp)http://localhost
переходит в каталогhttp://localhost/wsdl
P.S localhost ведет себя так же, как 127.0.0.1 в каждом случае
Пожалуйста, подскажите, что еще я должен добавить, чтобы это работало? например
- добавить что-нибудь в /etc/hosts или любую другую конфигурацию
или - расскомментировать строку Include etc/extra/httpd-vhosts.conf в httpd.conf
обновление
создан правильный сертификат
Примечание: напишите wsdl.local
Самый важный элемент, о котором запрашивается, — это строка, которая гласит
“Common Name (например, полное DNS-имя сервера или ваше имя)”. Вы должны ввести
доменное имя, которое вы хотите связать с сертификатом, или
публичный IP-адрес сервера, если у вас нет доменного имени.
добавлен адрес виртуального хоста в /etc/hosts
127.0.0.1 wsdl.local
изменен /opt/lampp/etc/extra/ httpd-ssl.conf
<VirtualHost *:80>
DocumentRoot "/opt/lampp/htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost _default_:443> <-- добавлен обратно _default_
ServerAlias www.wsdl.local <-- добавлен алиас с www
<Directory "/opt/lampp/htdocs/wsdl"> <-- обернут каталог в "
Options All
AllowOverride All
order allow,deny
allow from all
#SSLRequireSSL <-- закомментирован
</Directory>
и я заметил изменения в поведении URL
-
http://wsdl.local/
http://localhost
&http://127.0.0.1
>> URL изменился наhttp://wsdl.local/xampp/
и отображает основную страницу XAMPP -
https://wsdl.local/
&https://localhost/
переходят в директорию wsdl (что и нужно) -
https://127.0.0.1/
>> URL превращается вhttps://127.0.0.1/xampp/
и Объект не найден
Но это все еще не то, что ожидается, требуется
http[s]://localhost/
иhttp[s]://127.0.0.1/
берут меня на главную страницу XAMPP
http[s]://wsdl.local
переходит в директорию wsdl
Шаг 1: Используйте OpenSSL для создания ключей, которые используются для защиты вашего
сайта. Эти ключи используются при шифровании и расшифровке трафика
на вашем защищенном сайте.
$ openssl genrsa -out mydomain.key 1024
Шаг 2: Создайте свой собственный сертификат.
$ openssl req -new -key mydomain.key -x509 -out mydomain.crt
Шаг 3: Храните закрытый ключ в каталоге /etc/apache2/ssl.key/
и сертификат в каталоге /etc/apache2/ssl.crt/.
Примечание: Каталог ssl.key должен быть доступен только для чтения только для root.
Шаг 4: Теперь вам нужно отредактировать файл httpd.conf в /etc/apache2.
Теперь этот файл должен содержать следующее:
> <VirtualHost *:80>
>
> ServerAdmin [email protected]
>
> DocumentRoot /opt/lampp/htdocs/wsdl
>
> ServerName www.mydomain.com
>
> ServerAlias mydomain.com
>
> </VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot /opt/lampp/htdocs/wsdl
ServerName mail.mydomain.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/mydomain.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/mydomain.key
ErrorLog "/opt/lampp/logs/wsdl_error_log"
TransferLog "/opt/lampp/logs/wsdl_access_log"
</VirtualHost>
<Directory /srv/www/htdocs/mydomain-secure>
SSLRequireSSL
</Directory>
Не меняйте Listen 80 на 443 в /etc/httpd/conf/httpd.conf. SSL настроен в /etc/httpd/conf.d/ssl.conf.
SSL включен и слушает по умолчанию с самоподписанным сертификатом.
Вы можете попасть на сайт по умолчанию, используя SSL, просто зайдя на https://localhost
(добавлять порт в конец URL не нужно).
Если вы хотите перенаправить все HTTP-запросы на HTTPS (что, как я полагаю, вы пытаетесь сделать), вы можете либо добавить постоянное перенаправление, либо использовать модуль Apache mod_rewrite.
Самый простой и безопасный способ — настроить постоянное перенаправление. Включите имена виртуальных хостов и добавьте директиву Redirect в VirtualHost в /etc/httpd/conf/httpd.conf.
Ответ или решение
Ваша проблема связана с конфигурацией виртуальных хостов на вашем сервере Apache, а также с настройками SSL-сертификатов. Давайте разберемся, как правильно настроить веб-сервер и устранить возникающие ошибки.
Теория
Виртуальные хосты (Virtual Hosts) в Apache — это способ настроить несколько веб-сайтов или сервисов на одном сервере. Существует два типа виртуальных хостов: по IP и по имени. В Apache 2.4 директива NameVirtualHost
больше не нужна для создания виртуальных хостов по имени, поскольку их поддержка реализована "из коробки".
SSL-сертификаты обеспечивают шифрование трафика между сервером и клиентом. Сертификат должен быть корректно выдан и настроен, чтобы избежать ошибок SSL, таких как "сертификат не включает идентификатор, который соответствует имени сервера".
Пример
У вас есть несколько проблем с текущей конфигурацией:
-
Ошибки SSL:
- Сертификат выдан как CA-сертификат (CA == TRUE), что некорректно для серверного сертификата.
- Сертификат не соответствует имени сервера (Common Name и ServerName должны совпадать).
-
Проблемы с маршрутизацией:
- Проблемы с перенаправлением HTTP на HTTPS.
- Несоответствия между URL и запрашиваемыми директориями.
Применение
-
Исправление ошибок сертификата:
- Создайте новый сертификат, убедившись, что Common Name совпадает с ServerName.
- Убедитесь, что ваш сертификат не является CA-сертификатом. Это параметр задаётся при генерации сертификата.
-
Используйте следующие команды для создания личного ключа и сертификата:
openssl genrsa -out wsdl.key 2048 openssl req -new -key wsdl.key -x509 -days 365 -out wsdl.crt -subj "/CN=wsdl.local"
-
Правильная конфигурация Virtual Hosts:
Убедитесь, что в файле конфигурации Apache настроены виртуальные хосты для HTTP и HTTPS. Пример:
Для HTTP (порт 80):
<VirtualHost *:80> DocumentRoot "/opt/lampp/htdocs" ServerName localhost ServerAlias 127.0.0.1 RewriteEngine On RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [R=301,L] </VirtualHost>
Для HTTPS (порт 443):
<VirtualHost *:443> DocumentRoot "/opt/lampp/htdocs/wsdl" ServerName wsdl.local ServerAlias www.wsdl.local SSLEngine on SSLCertificateFile "/opt/lampp/apache2/ssl/wsdl.crt" SSLCertificateKeyFile "/opt/lampp/apache2/ssl/wsdl.key" </VirtualHost>
-
Обновление /etc/hosts:
Убедитесь, что файл
/etc/hosts
содержит соответствующие записи для вашего виртуального хоста:127.0.0.1 wsdl.local
-
Диагностика и тестирование:
- Перезапустите Apache:
sudo /opt/lampp/lampp restart
. - Проверьте журналы ошибок Apache для выявления дальнейших проблем.
- Откройте ваш браузер и введите
https://wsdl.local
для подтверждения правильной работы конфигурации.
- Перезапустите Apache:
-
Дополнительные настройки:
Если необходимо, чтобы запросы на
http://localhost
иhttp://127.0.0.1
открывали главную страницу XAMPP, а запросы наhttps://wsdl.local
— директорию WSDL, используйте показанные выше виртуальные хосты с перенаправлением.
Эти шаги помогут вам устранить ошибки SSL, правильно настроить виртуальные хосты и обеспечить корректную работу веб-сайта. Убедитесь, что после каждого изменения конфигурации вы перезапускаете Apache и проверяете, устранены ли ошибки.