Недавно мы создали новый сервер Windows 2012 с tomcat 7.0.57 и java-версией «1.8.0_45».«SSL23_GET_SERVER_HELLO: неизвестный протокол» После обновления сервера
Я получаю ниже ошибки при подключении к клиенту openssl. Но отлично работает от IE.
Новый сервер:
OpenSSL> s_client -connect xxx.xxx.xxx.xxx:443
Loading 'screen' into random state - done
CONNECTED(00000130)
5724:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:.\ssl\s
23_clnt.c:601:
OpenSSL>
Старый сервер: (подключение штрафа)
OpenSSL> s_client -connect yyy.yyy.yyy.yyy:443
Loading 'screen' into random state - done
CONNECTED(00000114)
depth=1 /C=XX/O=YYYY CA1
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
.........
SSL handshake has read 3064 bytes and written 282 bytes
---
New, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
Server public key is 2048 bit
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : EDH-RSA-DES-CBC3-SHA
.......
Может ли одно сказать, почему ведет себя, как это ??
Новый сервер: для Windows 2012 R2/Java версии "1.8.0_45"/Tomcat 7.0.57
Старый сервер: Windows 2003/Java версии "1.6.0_31"/Tomcat 6,0
Клиент: Windows 7/Java 1.7.0_75
Предполагая, что JSSE (не «native» = APR) Java 8 или 7 JSSE по умолчанию отключает SSLv2Hello на * клиенте *, но не * сервере *; по вашей ссылке Tomcat, по-видимому, отключает ее. OpenSSL * commandline * 's_client' по умолчанию имеет формат v2 через 0,9,8, v3 от 1,0,0 до; источник информации в сообщении об ошибке OP указывает, что он работает с 0.9.8 с патча j на l с 2009 года. 0.9.8 и 1.0.0 не реализуют TLS1.1 или 1.2 и, следовательно, не имеют флага '-tls1_1', а' - tls1_2' или версии '-no_'. ... –
... Все версии по умолчанию * предлагают * как минимум 1.0 даже в формате v2 (1.0.1 и выше предложение 1.2), но JSSE 8 с SSLv2Hello off отклоняет любое предложение v2, с использованием предупреждения 40 с версией 1.2 (таким образом, формат v3), что клиент 0.9.8 считается недействительным. Интригующе, JSSE ** 7 ** предупреждает с версией 1.0, которую OpenSSL понимает, но даже так 40 = handshake_failure не очень полезно. (OpenSSL * library * не является дефолтом вообще, это зависит от приложения.) Те, кто сказал, согласны с заключением. –
Команда openssl, работающая с -tls (s_client -connect xxx.xxx.xxx.xxx:443 -tls). Но когда я попытался включить SSlv3 в сам сервер tomcat, установив sslProtocol = "SSLv3", команда openssl не работает (без -tls). По моему пониманию. Если мы включим SSLv3 на сервере, openssl должен работать без -tls. –