Назад | Перейти на главную страницу

Один сайт правильно обрабатывает https-запрос без ssl, другой генерирует ошибку \ x16 \ x03 \ x01

У нас есть два сайта: sub.example1.com и example2.com. Ни один из них не настроен специально для обработки ssl-запросов. Один сайт https: /sub.example1.com успешно обрабатывает безопасный запрос на порт 443, рассматривая его как HTTP-запрос. Безопасный запрос на другой сайт, https://example2.com, время ожидания истекает и регистрируется ошибка "\ x16 \ x03 \ x01" в журнале apache hte.

Вот конфигурация example1 в / etc / httpd / sites-enabled /

ServerAdmin webmaster @ localhost Имя сервера sub.example1.com

    DocumentRoot /opt/example1/web/
    DirectoryIndex index.php index.html
    <Directory />
            Options FollowSymLinks
            AllowOverride All
    </Directory>
    <Directory /opt/example/web/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
            # This directive allows us to have apache2's default start page
            # in /apache2-default/, but still have / go to the right place
            #RedirectMatch ^/$ /apache2-default/
    </Directory>


    ErrorLog /var/log/httpd/errorExample1.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/httpd/accessExample1.log combined
    ServerSignature On

~

Например, нет файла .htaccess.

Вот конфигурация example2 в / etc / httpd / sites-enabled /

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName www.example2.com
    DocumentRoot /opt/example2/web
    <Directory />
            Options FollowSymLinks
            AllowOverride All
    </Directory>
    <Directory /opt/example2/web/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
            # This directive allows us to have apache2's default start page
            # in /apache2-default/, but still have / go to the right place
            #RedirectMatch ^/$ /apache2-default/
    </Directory>

    ErrorLog /var/log/httpd/errorExample2.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/httpd/accessExample2.log combined
    ServerSignature On

Вот, например, .htaccess2

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

httpd.conf

UseCanonicalName Off

NameVirtualHost *:80
# NameVirtualHost *:443
# Include generic snippets of statements
Include conf.d/*.conf

# Include the virtual host configurations:
Include /etc/httpd/sites-enabled/

conf.d / *. conf записи:

TraceEnable On

serverName.conf

ServerName ec2-xx-xx-xx-xxx.compute-1.amazonaws.com

welcome.conf

<LocationMatch "^/+$">
    Options -Indexes
    ErrorDocument 403 /error/noindex.html
</LocationMatch>

Я не могу понять, почему один переводит запрос https на http, а другой - нет. Любая помощь приветствуется.

Ни один из них не настроен специально для обработки ssl-запросов.

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

Один сайт https: /sub.example1.com успешно обрабатывает безопасный запрос на порт 443, рассматривая его как HTTP-запрос.

Маловероятно, потому что клиент отправляет запрос HTTPS. Если бы там не было SSL (например, простой HTTP), подтверждение SSL от клиента завершилось бы ошибкой, и он не смог бы выполнить внутренний HTTP-запрос. Хотя вы не предоставляете полную информацию о настройке, возможно, что SSL включен глобально на этом сервере или что есть какой-то обратный прокси-сервер, выполняющий завершение SSL и пересылающий запрос как простой HTTP.

регистрирует ошибку "\ x16 \ x03 \ x01" в журнале apache.

«\ x16 \ x03 \ x01» - это первые байты подтверждения SSL / TLS. Это означает, что клиент пытается поговорить с сервером по протоколу HTTPS, что ожидается, если вы используете https:// URL. И, очевидно, сервер прослушивает порт, на который клиенты также отправляют запрос, потому что в противном случае TCP-соединение уже не удалось бы. С нормальным https://host/ запрос порта будет 443, что означает, что ваш сервер должен быть явно настроен для обработки простого HTTP на порту 443 (это не происходит ни само по себе, ни в настройке по умолчанию). Или вы действительно пробовали URL https://port:80/ и заставил браузер подключиться по HTTPS к порту, зарезервированному для обычного HTTP.

Я предполагаю, что проблемы в части настройки сервера, которую вы здесь не показываете.

вы можете добавить файл .htaccess в пример 1

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Пример 2 выглядит как wordpress, есть плагины wordpress для перенаправления http - возможно, он использует это