2014-10-21 2 views
4

Я пытаюсь подключиться с одного сервера (A) в AWS к другому серверу (B) в AWS с помощью Tomcat 7 + SSL.curl: Неизвестная ошибка протокола SSL в связи

Сервер:

  • Ubuntu 14.04
  • OpenSSL 1.0.1f

Сервер Б:

  • Ubuntu 13.04
  • Tomcat 7
  • OpenSSL 1.0.1c
  • SSL сертификат

Я пытаюсь следующую команду в сервере A:

curl https://Server.B -v 

И я получаю следующее исключение:

* Connection #0 to host test.salespredict.com left intact 
[email protected]:~$ curl https://Server.B.com -v 
* Rebuilt URL to: https://Server.B.com/ 
* Hostname was NOT found in DNS cache 
* Trying 54.245.81.*... 
* Connected to Server.B.com (54.245.81.*) port 443 (#0) 
* successfully set certificate verify locations: 
* CAfile: none 
    CApath: /etc/ssl/certs 
* SSLv3, TLS handshake, Client hello (1): 
* Unknown SSL protocol error in connection to Server.B.com:443 
* Closing connection 0 
curl: (35) Unknown SSL protocol error in connection to Server.B.com:443 

Я пытался проверить с OpenSSL

openssl s_client -connect Server.B.Address:443 

я получаю следующий результат:

CONNECTED(00000003) 
140284858304160:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:184: 
--- 
no peer certificate available 
--- 
No client certificate CA names sent 
--- 
SSL handshake has read 0 bytes and written 307 bytes 
--- 
New, (NONE), Cipher is (NONE) 
Secure Renegotiation IS NOT supported 
Compression: NONE 
Expansion: NONE 
--- 

Если я пытаюсь соединиться от моего собственного компьютера (OS X Mavericks), завитка успеха, но команда OpenSSL возвращает то же самое.

BTW

Если я пытаюсь:

curl https://Server.B -v -ssl3 

Это работа с сервера A, но я не хочу, чтобы указать протокол SSL.

Редактировать

Сервер B - Tomcat Конфигурация:

<Connector SSLEnabled="true" acceptCount="100" clientAuth="false" disableUploadTimeout="true" 
        enableLookups="true" maxThreads="200" port="443" keystoreFile="/var/lib/tomcat7/conf/Path/Path_keystore" keystorePass="******" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" 
        secure="true" sslProtocol="TLS" /> 
+1

Просто отметьте, что «-ssl3» не равно «-sslv3», но то же самое, что -s -s -l -3 ... –

ответ

4

Основное различие между установкой --sslv3 и не устанавливая его в том, что клиент не будет объявлять поддержку для версий выше SSL3.0 в исходном сообщении ClientHello. Обычно клиент и сервер соглашаются с версией, поддерживаемой обеими сторонами, так что клиент должен сообщать о лучшей версии SSL, которую он поддерживает.

Это похоже на то, что в вашем случае вы столкнулись с ситуацией, когда сервер (или какой-то средний) не только не может говорить о новых версиях TLS, но также не может нормально работать с SSL 3.0, потому что он кричит если клиент объявляет о поддержке более новых версий. Так как серверное программное обеспечение само по себе не выглядит старым, у вас есть либо действительно странная настройка сервера, либо какой-то средний ящик (т. Е. Балансировщик нагрузки, брандмауэр ...), который неспособен справиться с надлежащим TLS.

Дополнительная информация может быть возможной, если вы разместите дополнительную информацию о сервере. Также вы можете проверить сервер на SSLLabs.

EDIT: Похоже, сервер поддерживает TLS1. *, Но просто отключается, когда клиент предлагает шифр ECDHE-RSA-AES256-SHA . Использование openssl s_client -cipher 'ALL:!ECDHE-RSA-AES256-SHA' работает как curl --ciphers 'ALL:!ECDHE-RSA-AES256-SHA'. Я предполагаю, что это проблема на стороне сервера - возможно, вы сконфигурировали шифры, которые на самом деле не поддерживаются реализацией SSL в tomcat (что не является OpenSSL, потому что Java имеет свою собственную реализацию), и Java crroaks, когда он пытается их использовать ,

+0

Я добавил конфигурацию Tomcat (поддержка TLS) ... Можете ли вы скажите мне, какую дополнительную информацию вы хотели бы получить? Напоминаю вам, что сервер в AWS ... – Yakiros

+0

Вы пытались проверить сервер на ssllabs, как я и предложил? –

+0

Да, я получил 100 сертификатов, 90 в поддержке протокола, 40 в обмене ключами и 60 в Cipher Strength (исправят его при следующем обновлении ...). В симуляции рукопожатия у меня почти все из них преуспели ... (большинство андроидов не удалось) ... – Yakiros

Смежные вопросы