- Вопрос или проблема
- Ответ или решение
- Эффективное решение проблемы "Connection Refused" на порту 443 Apache
- Введение
- Анализ проблемы
- 1. Проверка включенности SSL и конфигурации Apache
- 2. Проверка брандмауэра Oracle Cloud
- 3. Перекрытие с ufw
- 4. Тестирование подключения
- 5. Перенаправление с порта 80 на порт 443
- 6. Проверка сертификата
- Заключение
Вопрос или проблема
Недавно настроил SSL на Apache 2.4/Ubuntu 20.04, размещенном в Oracle Cloud, и получаю отказ в подключении для https/port 443.
Внешнее устройство:
$ curl simpliassure.com:443
curl: (7) Не удалось подключиться к simpliassure.com порт 443: Соединение отказано
$ curl simpliassure.com
(обычное HTML содержимое загружается)
$ nmap -p 443 132.145.100.143
Хост активен (латентность 0.024с).
PORT STATE SERVICE
443/tcp закрыт https
ssh’d на сервер:
$ curl localhost
(обычное HTML содержимое загружается)
$ curl localhost:443
(обычное HTML содержимое загружается)
$ curl https://localhost
curl: (35) ошибка:1408F10B:SSL routines:ssl3_get_record:неправильный номер версии
$ apachectl configtest
Синтаксис в порядке
$ sudo apache2ctl -S
Конфигурация VirtualHost:
132.145.100.143:80 simpliassure.com (/etc/apache2/sites-enabled/default-ssl.conf:3)
132.145.100.143:443 simpliassure.com (/etc/apache2/sites-enabled/default-ssl.conf:14)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/run/apache2/" механизм=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
Mutex ssl-stapling-refresh: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
$ ss -tupln
Netid Состояние Recv-Q Send-Q Локальный адрес:порт Адрес:порт партнера
udp UNCONN 0 0 0.0.0.0:111 0.0.0.0:*
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
udp UNCONN 0 0 10.0.0.29%ens3:68 0.0.0.0:*
udp UNCONN 0 0 [::]:111 [::]:*
tcp LISTEN 0 4096 0.0.0.0:111 0.0.0.0:*
tcp LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 4096 [::]:111 [::]:*
tcp LISTEN 0 511 *:80 *:*
tcp LISTEN 0 128 [::]:22 [::]:*
tcp LISTEN 0 511 *:443 *:*
/etc/sites-available/default-ssl.conf
является единственной символической ссылкой в /etc/sites-enabled/default-ssl.conf
/etc/sites-available/default-ssl.conf:
<IfModule mod_ssl.c>
<VirtualHost 132.145.100.143:80>
ServerAdmin webmaster@localhost
ServerName simpliassure.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost 132.145.100.143:443>
ServerAdmin webmaster@localhost
ServerName simpliassure.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /home/ubuntu/certificate_bundle/www.simpliassure.com.crt
SSLCertificateKeyFile /home/ubuntu/certificate_bundle/www.simpliassure.com.key
SSLCertificateChainFile /home/ubuntu/certificate_bundle/www.simpliassure.com_intermediate.crt
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
/etc/apache2/ports.conf:
Listen 80
Listen 443
Ubuntu’s ufw неактивен.
Запущено…
$ sudo ufw allow https
$ sudo a2enmod ssl
$ sudo a2enmod headers
$ sudo a2ensite default-ssl
$ sudo systemctl restart apache2
… без успеха.
Правила входящего трафика Oracle Virtual Cloud Network:
Какие-либо идеи?
-
Проверьте ваш брандмауэр Oracle;
Если порт 443 не открыт, откройте его. -
Проверьте ваш брандмауэр ufw;
Запустите от имени root: ufw allow https
Запустите “nmap -p 443 132.145.100.143” снаружи, чтобы проверить, открыт ли порт/фильтруется ли он. Проверьте все брандмауэры на системе, а не только UFW.
Существует ошибка, явно замеченная в curl, похоже, что что-то не так с вашим сертификатом. Проверьте, какое имя хоста вы назначили сертификату против сервера. Также при создании сертификатов убедитесь, что вы используете subjectaltnames, чтобы он захватывал как имя хоста, fqdn, так и, при необходимости, ip в зависимости от ваших потребностей.
Думаю, вам нужно перенаправить порт 80 на порт 443.
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
</VirtualHost>
Ответ или решение
Эффективное решение проблемы "Connection Refused" на порту 443 Apache
Введение
Недавно вы настроили SSL на вашем сервере Apache 2.4, используя Ubuntu 20.04, и столкнулись с ошибкой подключения для HTTPS (порт 443). Эта проблема может быть вызвана разными факторами, включая настройки вашего сервера, брандмауэра или конфигурацию самого Apache. В данном ответе мы подробно рассмотрим ключевые аспекты решения проблемы.
Анализ проблемы
Обратите внимание на выводы команд, которые вы представили:
curl simpliassure.com:443
возвращает ошибку "Connection refused".nmap
показывает, что порт 443 закрыт.curl https://localhost
возвращает ошибку SSL.
Эти выводы указывают на то, что порт 443 не слушает внешние подключения, несмотря на то, что он слушает локальные запросы.
1. Проверка включенности SSL и конфигурации Apache
Убедитесь, что модуль SSL включен и настроен корректно. Команды, которые вы уже выполнили, являются правильными:
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo systemctl restart apache2
Однако важно проверить файл конфигурации /etc/sites-available/default-ssl.conf
. Учтите, что SSL-сертификаты должны быть правильно указаны:
SSLCertificateFile /home/ubuntu/certificate_bundle/www.simpliassure.com.crt
SSLCertificateKeyFile /home/ubuntu/certificate_bundle/www.simpliassure.com.key
SSLCertificateChainFile /home/ubuntu/certificate_bundle/www.simpliassure.com_intermediate.crt
Убедитесь, что файлы сертификатов доступны и имеют правильные разрешения дляApache.
2. Проверка брандмауэра Oracle Cloud
Проблема может быть связана с правилами брандмауэра в Oracle Cloud. Перейдите в настройки вашей виртуальной сети и проверьте, разрешен ли входящий трафик на порт 443. Если он закрыт, создайте новое правило для открытия порта.
3. Перекрытие с ufw
Хотя вы указали, что ufw
не активен, рекомендуется еще раз убедиться, что он не блокирует порты. Даже если ufw
отключен, проверьте другие настройки брандмауэра, которые могут блокировать доступ.
4. Тестирование подключения
Используйте команду nmap
для тестирования порта с внешней сети:
nmap -p 443 132.145.100.143
Это покажет, доступен ли порт 443 снаружи. Если он по-прежнему закрыт, очевидно, что проблема кроется вне вашего Apache.
5. Перенаправление с порта 80 на порт 443
Рекомендуется настроить переадресацию с порта 80 на 443, чтобы все не защищенные запросы перенаправлялись на HTTPS:
<VirtualHost *:80>
ServerName simpliassure.com
Redirect permanent / https://simpliassure.com/
</VirtualHost>
Добавьте это в ваш конфигурационный файл, чтобы обеспечить пользователей, которые заходят по HTTP, правильной перенаправляющей логикой.
6. Проверка сертификата
Проверьте, правильно ли настроены ваши сертификаты. Убедитесь, что ваш сертификат соответствует домену simpliassure.com
, а также, что вы включили альтернативные имена для сертификата, если это необходимо.
Заключение
Проблема "Connection refused" на порту 443 может быть вызвана различными факторами, и важно систематически проверять каждый из них. Убедитесь, что настройки Apache корректны, конфигурация сервера верна, а брандмауэр открыт. После выполнения всех этих шагов ваше HTTPS-соединение должно работать. Если вы столкнетесь с дальнейшими трудностями, возможно, стоит обратиться за помощью к специалистам или на форумы поддержки Apache.