Я сейчас в процессе обновления моих серверов Tomcat до Tomcat 7, используя соединитель APR с отключенным SSLv3. Вот мой соединитель:OpenSSL s_client не может подключиться к Tomcat 7 через APR
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
SSLEnabled="true"
SSLProtocol="TLSv1"
SSLCertificateFile="${CP_ROOT}/security/tomcat.crt"
SSLCertificateKeyFile="${CP_ROOT}/security/tomcat.key" />
Все, кажется, работает должным образом ... например. переход на страницу через HTTPS соответствует этой странице правильно. Однако мы используем балансировщик нагрузки F5, и как только я отключил SSLv3, настроенный монитор работоспособности начал работать с ошибкой для этого узла/порта. После некоторого поиска неисправностей на стороне F5, я решил попытаться диагностировать с помощью OpenSSL:
$ openssl s_client -connect casrept2.tc.columbia.edu:8443/cas/monitor.jsp
CONNECTED(00000003)
write:errno=54
Проделав то же самое, но заставляя TLSv1 (-tls1
), я могу подключить правильно:
$ openssl s_client -connect casrept2.tc.columbia.edu:8443/cas/monitor.jsp -tls1
CONNECTED(00000003)
... cert chain, etc, etc
Мне интересно, если это приведет к сбою монитора работоспособности. В любом случае, мне любопытно, почему мне нужно специально заставить -tls1
для этого работать. Я бы предположил, что он должен автоматически согласовать правильный протокол?
Похоже, вы правы. Я использовал openssl на своем Mac, который является «версией 0.9.8za». Я переключил Tomcat на NIO-разъем и убедился, что вы добавили 'SSLv2Hello' в принятые протоколы, и монитор отступил назад, поэтому, очевидно, он полагается на запрос' SSLv2Hello'. Я искал способ включить 'SSLv2Hello' для Tomcat/APR, но я не могу найти способ сделать это. – Teddy
@Teddy http://tomcat.apache.org/tomcat-8.0-doc/config/http.html#SSL_Support_-_APR/Native (и аналогично для 7) говорит, что SSLProtocol может принимать несколько значений с помощью знака плюс. Я не смотрел код, но я думаю, что это должно использовать «SSLv23» в OpenSSL (не беспокойтесь о имени) с битами «OP_NO» в качестве дополнения, и в этом случае, включая SSLv2, будет включен формат SSL2, но он отклонит фактические клиенты только для SSL2 * если * в шифр-листе нет шифров SSL2, которые OpenSSL> = 1.0.0 по умолчанию не соответствует заявленным значениям по умолчанию Tomcat, поэтому вы должны изменить это также для безопасности. –