Назад | Перейти на главную страницу

Tomcat 7 не отвечает, когда я включаю SSL (без подтверждения SSL)

Мой вопрос: почему Tomcat не отвечает, когда я включаю SSL?

Я попытался перенести работающее веб-приложение tomcat7 с сервера Ubuntu 12.10 x64 на новый сервер Ubuntu 14.04 x64. Были предприняты все попытки сохранить одинаковую конфигурацию на двух машинах.

На 80-м порту все работало отлично. Когда я редактирую файл server.xml, чтобы включить SSL Connector, я перестаю получать ответы от сервера. Я могу открыть соединение, но оно просто висит. Например, я могу подключиться по telnet к порту 443 и отправить команду «GET /», но ответа нет. Сервер не пытается установить соединение SSL.

В catalina.out нет ошибок, фактически я вижу сообщение об успешном выполнении обработчика протокола SSL:

Feb 13, 2015 10:28:49 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-443"]

Я проверил, что файл хранилища ключей действителен, перечислив его содержимое с помощью команды keytool. Хранилище ключей - это всего лишь копия со старого сервера, поэтому я не ожидаю никаких проблем с сертификатами или чем-то еще. Права доступа к файлам в хранилище ключей не должны быть проблемой, я даже пробовал на нем chmod 777, и никаких изменений в поведении нет.

Вот мой коннектор для server.xml. Опять же server.xml - это точная копия с предыдущего сервера Ubuntu 12, поэтому я думаю, что проблема в другом.

<Connector port="443" SSLEnabled="true" protocol="HTTP/1.1"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           keystoreFile="/var/lib/mywebapp/mywebapp.keystore"
           keystorePass="xxxxxxxx"/> 

Я попытался явно установить протокол здесь, и я пробовал все три доступных значения:

org.apache.coyote.http11.Http11Protocol - тот же результат

org.apache.coyote.http11.Http11NioProtocol - тот же результат

org.apache.coyote.http11.Http11AprProtocol - исключение, что APR / собственная библиотека недоступна

информация о версии tomcat:

Using CATALINA_BASE:   /usr/share/tomcat7
Using CATALINA_HOME:   /usr/share/tomcat7
Using CATALINA_TMPDIR: /usr/share/tomcat7/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.52 (Ubuntu)
Server built:   Jul 24 2014 08:38:51
Server number:  7.0.52.0
OS Name:        Linux
OS Version:     3.13.0-37-generic
Architecture:   amd64
JVM Version:    1.7.0_71-b14
JVM Vendor:     Oracle Corporation

Проблема в том, что Tomcat ждет энтропии. Чтобы решить эту проблему, добавьте в JVM следующий параметр:

-Djava.security.egd=file:/dev/./urandom