Итак, у меня никогда не было опыта работы с SSL / HTTPS, я когда-либо имел дело только со стандартным HTTP. Недавно я начал работу над сайтом, которому потребуется SSL. Итак, конечно, я пошел и исследовал, как это сделать, и начал. Я дошел до стадии успешной установки сертификата SSL - появляется зеленый замок, и сервер отвечает на запросы HTTPS через порт 443. У меня проблема в том, что, что бы я ни делал, я не могу получить какие-либо страницы, которые будут отображаться с использованием HTTPS / SSL, однако они выглядели нормально на порту 80 / HTTP (пока я не перенаправлял HTTP на HTTPS).
Проще говоря, я могу получить доступ к сайту HTTPS абсолютно нормально, однако мои страницы не отправляются, а отправляется 404 для каждого запроса.
<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. Я не могу понять, где находится конфигурация, вызывающая это
Не могу точно вспомнить, как я это понял, но где-то наткнулся на то, что предлагало поставить:
<VirtualHost _default_:443>
Вместо того:
<VirtualHost *:443>
После замены мой SSL работает отлично.
Обязательно ли перенаправлять все HTTP-запросы на https? Потому что кажется, что ты пытаешься здесь сделать.
Я предлагаю вам начать с удаления следующих строк из вашей конфигурации:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
Подозреваю, что синтаксис там может быть неправильным. Затем попробуйте подключиться еще раз по каждому протоколу http: // и https: //.
Попробуйте отредактировать свой файл, чтобы он выглядел примерно так:
Это очень простая конфигурация, если она работает, добавьте свои перенаправления, если они еще нужны.
Если это не сработает, покажите свой ssl.conf
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
<Directory "[docRoot]">
AllowOverride All
</Directory>
DocumentRoot [docRoot]
ServerName [serverName]
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile [...]/[domain].crt
SSLCertificateKeyFile [...]/[certificate].key
SSLCertificateChainFile [...]/[theotherone].crt
<Directory "[docRoot]">
AllowOverride All
</Directory>
DocumentRoot [docRoot]
ServerName [serverName]
</VirtualHost>