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

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

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

На порту 80 все работало отлично. Когда я редактирую файл server.xml, чтобы включить SSL-коннектор, я прекращаю получать ответы от сервера. Я могу открыть соединение, но оно просто висит там. Например, я могу подключиться к порту 443 через telnet и отправить команду "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/ собственная библиотека недоступна

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

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

1 ответ

Решение

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

-Djava.security.egd=file:/dev/./urandom
Другие вопросы по тегам