Tomcat 8 - запрашивает https, не указанный в файле access_log - PullRequest
0 голосов
/ 06 марта 2020

Я установил Tomcat 8 на компьютере Linux и включил коннектор https на порт 443.

<Connector port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    SSLEnabled="true"
    maxThreads="150"
    scheme="https"
    secure="true"
    URIEncoding="UTF-8"
    keystoreFile="${catalina.base}/conf/ssl/keystore.jks"
    keystorePass="*********"
    SSLVerifyClient="optional"
    SSLProtocol="TLSv1">

Я также включил Tomcat AccessLogValve, чтобы увидеть все запросы.

Я запускаю сервер и вижу, что коннектор https правильно создан в журнале каталины. Теперь, если я выполняю запросы https с другого сервера, я ничего не вижу в журналах tomcat и журнале доступа.

Если я запускаю команду tcpdump linux на порту 443, я вижу, что запросы прибытие в машину.

Если я использую curl в машине, где установлен Tomcat, она работает отлично. Я также могу добавить, что мне нужно запустить tomcat как root (временно, я знаю, что это плохая практика)

Любая подсказка?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

В Linux и других UNIX -подобных системах нам необходимо быть root (иметь привилегии суперпользователя), чтобы прослушивать порты TCP или UDP ниже 1024 (известные порты).

Это ограничено по соображениям безопасности

Для Tomcat, Jboss или любого сервера приложений, которые используют порт http 80 по умолчанию или SSL 443.

Существуют различные решения

1) Чаще всего используется обратный прокси-сервер для маршрутизации запроса с 80 или 443 на 8080 или 8443. Nginx, apache являются наиболее распространенными. Если у вашей организации есть BigIP F5. Вы также можете использовать это

2) Без внешних приложений Linux сама может помочь здесь. Использование переадресации портов.

Можно использовать либо Iptables, либо Firewalld.

системный firewalld может быть установлен следующим образом

sudo firewall-cmd --zone = publi c --add-port = 8080 / tcp --permanent

sudo firewall-cmd --zone = "publi c" --add-forward-port = порт = 80: proto = tcp: toport = 8080: toaddr =

sudo firewall-cmd --zone = publi c --add-masquerade

Затем вы просматриваете настройки с помощью

sudo firewall-cmd --list --all

0 голосов
/ 10 марта 2020

Проблема была связана с IP-адресом машины, на которой установлен Tomcat. У машины было 2 ips, один для eth0, а другой для eth1.

Я называл tomcat как https://serverName: 443 , но dns перенаправляет на набор ip в eth0.

Если я позвоню по номеру https://ipForEth01: 443 , он работает нормально.

Хотя я не уверен, что это правильное решение, мой клиент примет решение исправить конфигурацию сети сервера. или нет.

...