Я использую centos 7, использую firewalld.
Я настроил firewalld, поэтому 443 открыт:
$ sudo firewall-cmd --zone=public --permanent --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: couchdb2 dhcpv6-client http https ssh
ports: 443/tcp 5984/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
$ sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
Warning: ALREADY_ENABLED: 443:tcp
success
видимо порт 443 открыт, но ...
$ curl https://127.0.0.1:443
curl: (7) Failed connect to 127.0.0.1:443; Connection refused
Я также тестирую его с помощью веб-инструмента по адресу http://www.yougetsignal.com/tools/open-ports/
Я ввожу свой IP-адрес и порт 443 и получаю: Закрытый порт 443 закрыт на {my-ip}
Что могло пойти не так? Кажется, что он открывается, но это не так.
Я запрашиваю netstat с таким результатом:
$ sudo netstat -lnp | grep 443
udp 0 0 127.0.0.1:323 0.0.0.0:*
443/chronyd
udp6 0 0 ::1:323 :::*
443/chronyd
Как только я исправил свой nginx.conf для правильного прослушивания 443, результат выглядел так:
$ sudo netstat -lnp | grep 443
tcp 0 0 0.0.0.0:443 0.0.0.0:*
LISTEN 10197/nginx: master
tcp6 0 0 :::443 :::*
LISTEN 10197/nginx: master
udp 0 0 127.0.0.1:323 0.0.0.0:*
443/chronyd
udp6 0 0 ::1:323 :::*
443/chronyd
Ошибка В соединении отказано обычно означает, что брандмауэр разрешил прохождение пакетов (если брандмауэр активно не отклоняет попытку подключения), но служба, прослушивающая номер назначенного порта, отсутствует.
В вашем случае вам необходимо убедиться, что веб-сервер HTTP работает и прослушивает порт 443. Вы можете использовать следующую команду для проверки.
sudo netstat -lnp | grep 443
Редактировать: Как прокомментировал @Paul, показанные выходные данные означают, что на порту 443 не прослушивается процесс. Результат не имеет значения, потому что идентификатор процесса соответствует 443, и нам нужно, чтобы он совпадал с номером порта протокола TCP. Вам нужно найти строку, похожую на:
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN <pid>/<proc_name>
Вам нужно перезагрузить firewalld
после того, как вы добавите правило с --permanent
или вам нужно повторно запустить команду без --permanent
.
Когда ты говоришь --permanent
firewalld просто обновляет конфигурацию, но не перезагружает ее.