Конфигурация SSL Apache Подключение отклонено connect:errno=111

Вопрос или проблема

Я пытаюсь настроить 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). Убедившись, что все настройки соответствуют требованиям, а порты корректно открыты, вы сможете устранить проблему. Если возникнут дополнительные вопросы или сложности, всегда стоит обратиться к соответствующей документации или сообществу поддержки.

Оцените материал
Добавить комментарий

Капча загружается...