Вопрос или проблема
Я пытаюсь настроить виртуальный хост apache для ssl.
mywebsite.conf
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName mywebsite.com
ServerAlias www.mywebsite.com
DocumentRoot /opt/tomcat/webapps/mywebsite
<Directory /opt/tomcat/webapps/mywebsite>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined[L,NE,R=permanent]
</VirtualHost>
mywebsite-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName mywebsite.com
ServerAlias www.mywebsite.com
DocumentRoot /opt/tomcat/webapps/mywebsite
<Directory /opt/tomcat/webapps/mywebsite>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /certs/mywebsite_ssl_certificate.crt
SSLCertificateKeyFile /certs/_.mywebsite_private_key.key
SSLCertificateChainFile /certs/_.mywebsite_ssl_certificate_INTERMEDIATE.crt
</VirtualHost>
</IfModule>
Я активировал оба сайта с помощью команды a2ensite
.
И отключил все остальные сайты.
Также модуль ssl включен.
Файл /etc/hosts
выглядит так:
# конфигурация DNS
# IPv4
127.0.0.1 localhost
127.0.0.1 mywebsite.com
#
# IPv6
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Если я пытаюсь получить доступ к http://mywebsite.com через браузер, я могу увидеть свое приложение. Но если я пытаюсь получить доступ к https://mywebsite.com через браузер, возникает ошибка:
этот сайт недоступен, веб-страница может быть временно недоступна или
она могла быть перемещена на новый адрес
Мне нужна помощь, где может быть ошибка в моей конфигурации.
Ваши конфигурации выглядят хорошо. Однако, похоже, что Apache может не слушать порт 443.
Вам может понадобиться указать Apache слушать этот порт, добавив следующее в файл конфигурации.
Listen 443
Эта строка должна находиться вне тега <VirtualHost>
.
Вы можете попробовать добавить это в верхнюю часть файла mywebsite-ssl.conf
или создать отдельный файл конфигурации для этого.
Если вы используете Apache 2.4:
echo "Listen 443" | sudo tee /etc/apache2/conf-available/ssl-port.conf
sudo a2enconf ssl-port
# Я не уверен, что перезагрузка будет достаточной
# возможно, вам нужно будет полностью перезапустить службу apache2
sudo apache2ctl restart
Ответ или решение
Настройка виртуального хоста Apache с SSL-сертификатом
При настройке виртуального хоста Apache для работы с SSL-сертификатом могут возникнуть разные проблемы. Давайте рассмотрим вашу конфигурацию детально и определим возможные пути решения проблемы «Этот сайт недоступен» при попытке доступа к HTTPS.
Анализ конфигурации
Вы привели две конфигурации для Apache: одну для HTTP (порт 80) и другую для HTTPS (порт 443). Ниже приведены ключевые точки вашего кода:
-
Файл конфигурации mywebsite.conf:
<VirtualHost *:80> ServerAdmin [email protected] ServerName mywebsite.com ServerAlias www.mywebsite.com DocumentRoot /opt/tomcat/webapps/mywebsite ... </VirtualHost>
-
Файл конфигурации mywebsite-ssl.conf:
<IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin [email protected] ServerName mywebsite.com ServerAlias www.mywebsite.com DocumentRoot /opt/tomcat/webapps/mywebsite SSLEngine on SSLCertificateFile /certs/mywebsite_ssl_certificate.crt SSLCertificateKeyFile /certs/_.mywebsite_private_key.key SSLCertificateChainFile /certs/_.mywebsite_ssl_certificate_INTERMEDIATE.crt </VirtualHost> </IfModule>
Проверка настройки
-
Проверка слушающего порта:
Убедитесь, что Apache слушает на порту 443. Для этого необходимо добавить следующую строку в конфигурационный файл:Listen 443
Эта строка должна находиться вне блока
<VirtualHost>
. Вы можете добавить её в начале файлаmywebsite-ssl.conf
или создать отдельный конфигурационный файл, например,/etc/apache2/conf-available/ssl-port.conf
и затем активировать его:echo "Listen 443" | sudo tee /etc/apache2/conf-available/ssl-port.conf sudo a2enconf ssl-port
-
Перезапуск Apache:
После внесения изменений, перезапустите Apache для применения новых настроек:sudo systemctl restart apache2
В определенных ситуациях может быть полезно выполнить полное перезапуск, а не просто перезагрузку конфигурации:
sudo apache2ctl restart
Проверьте наличие ошибок
После перезапуска Apache проверьте наличие ошибок в логах:
sudo tail -f /var/log/apache2/error.log
Это поможет вам выявить, если возникли проблемы со сертификатами или конфигурацией SSL.
Убедитесь в наличии сертификатов
Проверьте, что все указанные файлы сертификатов действительно существуют и доступны для чтения пользователем, под которым работает Apache:
/certs/mywebsite_ssl_certificate.crt
/certs/_.mywebsite_private_key.key
/certs/_.mywebsite_ssl_certificate_INTERMEDIATE.crt
Если эти файлы недоступны, Apache не сможет настроить SSL, и вы получите ошибку доступа на порт 443.
Проверка доступности с помощью curl
Для более точной диагностики можно использовать команду curl
, чтобы проверить доступность HTTPS:
curl -I https://mywebsite.com
Эта команда покажет заголовки ответа сервера и может помочь в выявлении проблем.
Заключение
Следуя приведенным шагам, вы должны быть в состоянии устранить проблему и успешно настроить виртуальный хост Apache для работы с SSL-сертификатом. Важно помнить, что работа с сертификатами и веб-серверами требует тщательной проверки, поэтому не стесняйтесь обращаться к журналам для поиска подсказок о проблемах.