- Вопрос или проблема
- Ответ или решение
- Шаг 1: Проверка загрузки необходимых модулей Apache
- Шаг 2: Проверка конфигурации виртуального хоста
- Шаг 3: Настройка прослушивания порта 443
- Шаг 4: Проверка настроек iptables
- Шаг 5: Запуск Apache и проверка на порту 443
- Шаг 6: Проверка внешних соединений
- Шаг 7: Проверка доступа из браузера
- Заключение
Вопрос или проблема
Я пытаюсь настроить SSL на старом сервере opensuse:
openSUSE 11.4 (x86_64)
VERSION = 11.4
CODENAME = Celadon
Я включил модуль SSL в apache:
apache2ctl -M
Загруженные модули:
core_module (статический)
mpm_prefork_module (статический)
http_module (статический)
so_module (статический)
actions_module (совместный)
alias_module (совместный)
auth_basic_module (совместный)
authn_file_module (совместный)
authz_host_module (совместный)
authz_groupfile_module (совместный)
authz_default_module (совместный)
authz_user_module (совместный)
autoindex_module (совместный)
cgi_module (совместный)
dir_module (совместный)
env_module (совместный)
expires_module (совместный)
include_module (совместный)
log_config_module (совместный)
mime_module (совместный)
negotiation_module (совместный)
setenvif_module (совместный)
ssl_module (совместный)
userdir_module (совместный)
php5_module (совместный)
reqtimeout_module (совместный)
deflate_module (совместный)
headers_module (совместный)
rewrite_module (совместный)
Синтаксис в порядке
И настроил виртуальный хост, предоставив SSL сертификаты (путем копирования и редактирования vhost-ssl.template и переименования в https.xxxxxxxx.conf) и перезапустил apache.
Когда я пытаюсь подключиться, я получаю эту ошибку:
openssl s_client -connect localhost:443
connect: Соединение отклонено
connect:errno=111
Это версия openssl, установленная на сервере:
OpenSSL 1.0.1p 9 Jul 2015 (Библиотека: OpenSSL 1.0.0c 2 Dec 2010)
Если это поможет, вот моя конфигурация iptables:
iptables -L -vn
Цепочка INPUT (политика ACCEPT 4641 пакетов, 815K байт)
pkts bytes target prot opt in out source destination
Цепочка FORWARD (политика ACCEPT 0 пакетов, 0 байт)
pkts bytes target prot opt in out source destination
Цепочка OUTPUT (политика ACCEPT 1691 пакетов, 4745K байт)
pkts bytes target prot opt in out source destination
Можете ли вы помочь мне понять, почему я не могу подключиться к порту 443 на localhost?
ИЗМЕНЕНИЕ:
Я считаю, что проблема в apache и дополнительном файле https.xxxxxxx.conf:
httpd2 -S
Конфигурация VirtualHost:
шаблоны виртуальных хостов с подстановочными именами и _default_ серверами:
*:80 является шаблоном виртуального хоста
сервер по умолчанию xxxxxxxx.it (/etc/apache2/vhosts.d/xxxxxxxx.conf:3)
порт 80 шаблон_virtual_host xxxxxxxx.it (/etc/apache2/vhosts.d/xxxxxxxx.it.conf:3)
порт 80 шаблон_virtual_host XXX.XXX.XXX.XXX (/etc/apache2/vhosts.d/xxxxxxxx.it.conf:9)
В моем listen.conf, похоже, что если модуль SSL включен, он должен слушать 443:
Listen 80
<IfDefine SSL>
<IfDefine !NOSSL>
<IfModule mod_ssl.c>
Listen 443
</IfModule>
</IfDefine>
</IfDefine>
Это вывод netstat:
netstat -tulpn
Активные интернет-соединения (только серверы)
Протокол Recv-Q Send-Q Локальный адрес Удаленный адрес Состояние PID/имя программы
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 8105/mysqld
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1847/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2179/master
tcp 0 0 :::80 :::* LISTEN 13330/httpd2-prefor
tcp 0 0 :::21 :::* LISTEN 1930/vsftpd
tcp 0 0 :::22 :::* LISTEN 1847/sshd
tcp 0 0 ::1:25 :::* LISTEN 2179/master
Я изменил файл /etc/sysconfig/apache2, чтобы включить модуль SSL
APACHE_SERVER_FLAGS="SSL"
Теперь, похоже, он отвечает правильно как локально, так и удаленно:
openssl s_client -connect localhost:443
CONNECTED(00000003)
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify return:1
Тем не менее, у меня все еще есть проблемы, так как я получаю от браузера:
Этот сайт недоступен
xxxxxxxx.it неожиданно закрыл соединение.
Попробуйте:
Проверить подключение
Проверить прокси и брандмауэр
Запустить диагностику сети
ERR_CONNECTION_CLOSED
Тем не менее, я считаю, что проблема не связана с этим.
Наконец, я разобрался! В конфигурации listen.conf по умолчанию для Apache не было записи для IP-адреса, назначенного машине. Ох. Я думал, что “listen 80” покроет все IP-адреса для машины.
Ответ или решение
Конфигурация SSL Apache: Ошибка соединения отказано (errno=111)
На сервере с открытым SUSE 11.4 возникла проблема при настройке SSL для Apache: при попытке выполнить подключение к локальному серверу с помощью команды openssl s_client -connect localhost:443
было получено сообщение об ошибке: Connection refused (errno=111)
. Давайте рассмотрим возможные причины данной проблемы и способы их устранения.
Шаг 1: Проверка загрузки необходимых модулей Apache
Первым делом необходимо убедиться, что модуль SSL для Apache загружен. Вы уже проверяли это с помощью команды apache2ctl -M
, и выяснили, что модуль ssl_module
успешно загружен, что является хорошим знаком.
Шаг 2: Проверка конфигурации виртуального хоста
Вы создали виртуальный хост с SSL, скопировав шаблон vhost-ssl.template и отредактировав его. Убедитесь, что в файле конфигурации виртуального хоста заданы правильные параметры, такие как путь к SSL-сертификатам и ключам, а также корректны настройки DocumentRoot
и других директив, специфичных для вашего приложения.
Шаг 3: Настройка прослушивания порта 443
Следующим шагом стоит проверить файл listen.conf
. В вашем случае, конфигурация подразумевает, что Apache должен прослушивать 443 порт, однако важно убедиться, что IP-адрес вашего сервера корректно указан в конфигурации. Ваш изначальный файл listen.conf
не имел конкретизации по IP-адресу, и это могло быть причиной проблемы. Правильная строка в listen.conf
может выглядеть следующим образом:
Listen 443
Или, если необходимо, укажите конкретный IP-адрес:
Listen XXX.XXX.XXX.XXX:443
Шаг 4: Проверка настроек iptables
Проверка конфигурации iptables показала, что политика по умолчанию для входящих потоков установлена в ACCEPT
, что означает, что правила блокировки для порта 443 отсутствуют. Однако, всегда стоит убедиться, что правила не перекрывают друг друга.
Шаг 5: Запуск Apache и проверка на порту 443
После внесения всех необходимых изменений в конфигурацию Apache, важно перезапустить службу с помощью следующей команды:
sudo service apache2 restart
Или:
sudo systemctl restart apache2
После перезапуска используйте команду netstat
или ss
, чтобы убедиться, что Apache действительно слушает 443 порт:
netstat -tulpn
Результат должен включать строку с 0.0.0.0:443
или с IP-адресом вашей машины.
Шаг 6: Проверка внешних соединений
Теперь попробуйте подключиться снова с помощью openssl
и убедитесь, что вы получаете успешное соединение:
openssl s_client -connect localhost:443
Если соединение устанавливается успешно, как вы уже упомянули, возможно, проблема будет на стороне браузера.
Шаг 7: Проверка доступа из браузера
Если соединение с помощью OpenSSL проходит, однако браузер не может подключиться, стоит проверить дополнительные факторы:
- Убедитесь, что вы вводите правильный URL в браузере и используете HTTPS://.
- Проверьте доступность других ресурсов с использованием HTTPS на этом сервере, чтобы исключить временные проблемы.
- Проверьте журналы ошибок Apache (
/var/log/apache2/error.log
) на наличие подсказок о том, почему браузер не может установить соединение.
Заключение
Неправильная конфигурация в listen.conf
часто может быть источником таких ошибок, как Connection refused (errno=111)
. Убедившись, что все настройки соответствуют требованиям, а порты корректно открыты, вы сможете устранить проблему. Если возникнут дополнительные вопросы или сложности, всегда стоит обратиться к соответствующей документации или сообществу поддержки.