У меня Tomcat 9.0.36 работает на виртуальной машине Ubuntu 18.04.4 LTS. Я пытаюсь настроить его на использование сертификата, полученного от центра сертификации. Я успешно сгенерировал файл хранилища ключей с помощью keytool и попытался настроить Tomcat для прослушивания порта 8443 для трафика https.
Соответствующие поля в server.xms:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8443" protocol="HTTP/1.1" maxThreads="100"
scheme="https" secure="true"
SSLEnabled="true"
clientAuth="false"
sslProtocol="TLS"
keyAlias="correctAlias"
keystoreFile="/usr/lib/jvm/jdk-12.0.2/lib/security/keystorefile.jks"
keystorePass="correctPassWord" />
Я пробовал использовать несколько конфигураций обоих портов (с или без redirectPort = ..., закомментировал другой порт и т. Д.), И конечный результат был таким же. На порту 8080 все работает нормально (при включенном коннекторе), но на 8443 результат такой:
This site can’t be reached {my ip} took too long to respond.
netstat -plnt дает следующее:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 22748/java
tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN 22748/java
...
Итак, я предполагаю, что есть что-то, что мешает серверу отвечать, поскольку catalina.out не выдает никаких ошибок, только информация о запуске, о том, что http-nio-8080 и http-jsse-nio-8443 были запущены, и все, похоже, бег.
Я стремлюсь к тому, чтобы в конечном результате все перенаправлялось на протокол https, и ничего не было незашифрованным.
Похоже, что в нашей сети происходило что-то интересное, поэтому я направил порт 443 на 8443, используя
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
Кажется, это работает. В конце концов, это было то, что я все равно искал, поэтому мне удалось решить сразу две проблемы.
Убедитесь, что порт (8443) разрешен или открыт для вашего IP-адреса.
Так что эта связь может достигать внешнего мира.