Итак, у меня никогда не было опыта работы с SSL / HTTPS, я когда-либо имел дело только со стандартным HTTP. Недавно я начал работу над сайтом, который будет нуждаться в SSL. Поэтому, конечно, я вышел и исследовал, как и начал. Я дошел до стадии успешной установки сертификата SSL - появляется зеленый замок, и сервер отвечает на запросы HTTPS на порт 443. У меня есть проблема, что независимо от того, что я делаю, я не могу заставить отображаться какие-либо страницы с использованием HTTPS / SSL, однако они нормально выглядели на порту 80 / HTTP (пока я не перенаправлю HTTP на HTTPS).
Проще говоря, я могу получить доступ к HTTPS-сайту абсолютно нормально, однако мои страницы не отправляются, скорее 404 отправляется за каждый запрос.
/etc/apache2/sites-available/[name].conf
<VirtualHost *:80>
ServerName [serverName]
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
</VirtualHost>
<VirtualHost *:443>
ServerName [serverName]
ServerAdmin [email]
DocumentRoot [docRoot]
# I know the following SSL cert stuff is correct
SSLEngine On
SSLCertificateFile [...]/[domain].crt
SSLCertificateKeyFile [...]/[certificate].key
SSLCertificateChainFile [...]/[theotherone].crt
ErrorLog ${APACHE_LOG_DIR}/[custom]_error.log
CustomLog ${APACHE_LOG_DIR}/[custom]_access.log combined
<Directory "[docRoot]">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Я не уверен, есть ли что-то еще, на что вы хотели бы взглянуть, или какие-либо другие детали, но если есть, дайте мне знать
РЕДАКТИРОВАТЬ:
После некоторого поиска в файлах конфигурации я установил, что по какой-то причине при подключении к HTTPS сервер использует корневой каталог документа в конфигурации по умолчанию (/ var / www /), однако эта конфигурация по умолчанию не включена с a2ensite. Я не могу понять, где находится конфигурация, которая вызывает это
источник
Rewrite
директивы выглядят так, как будто вы пытаетесь запустить Apache за плохо настроенным обратным прокси-сервером. Если ваш Apache обслуживает домен напрямую, без прокси, вам нужно просто удалить всеRewrite
директивы и заменить их на однуRedirect
. И настройте отдельные файлы журналов для каждого такVirtualHost
, чтобы вы могли точно видеть, какойVirtualHost
процесс обрабатывает каждый запрос.Ответы:
Обязательно ли перенаправлять все http-запросы на https? Потому что, кажется, это то, что вы пытаетесь сделать здесь.
Я предлагаю вам начать с удаления следующих строк из вашего conf:
Я подозреваю, что синтаксис может быть неправильным там. Затем попробуйте снова подключиться к каждому протоколу http: // и https: //.
источник
Я не могу точно вспомнить, как я понял это, но я наткнулся на что-то, что предложило поставить:
<VirtualHost _default_:443>
Вместо того:
<VirtualHost *:443>
С тех пор мой SSL работает отлично.
источник
Попробуйте отредактировать ваш файл, чтобы он выглядел примерно так:
Это очень простой конф, если это работает, добавьте ваши перенаправления, если они все еще необходимы.
Если это не работает, пожалуйста, покажите свой ssl.conf
источник