2016-02-11 10 views
2

Я пытаюсь подключить встроенное устройство к smtp.gmail.com:465, используя tls1.2 с WolfSSL. Библиотека создает и отправляет следующее сообщение clientHello и получает отказ от рукопожатия.SSL handshake_failure после clientHello

16 03 03 00 4f 01 00 00 4b 03 03 2e 2a ec 85 7f 
15 dd 09 5f 22 d1 53 82 60 d7 80 67 28 aa 67 48 
ce f0 71 ab 63 d0 b2 3e 55 3a 05 00 00 14 c0 27 
c0 23 c0 0a c0 09 c0 07 c0 08 c0 14 c0 13 c0 11 
c0 12 01 00 00 0e 00 0d 00 0a 00 08 04 03 02 03 
04 01 02 01 

Настоящее сообщение получено;

15 03 03 00 02 02 28 

Как можно видеть в wireshark screenshot следующие наборы шифров поддерживаются клиентом;

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023) 
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009) 
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (0xc007) 
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc008) 
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) 
**TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)** 
**TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011)** 
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012) 

... и следующие алгоритмы подписи поддерживается клиентом (см шестнадцатеричной части в нижней части экрана, Wireshark не декодирует алгоритмы подписи)

04 03: SHA256 EDCSA 
02 03: SHA1 EDCSA 
04 01: SHA256 RSA 
02 01: SHA1 RSA 

С другой стороны, , smtp.gmail.com поддерживает следующие комплекты шифрования; (Это получается путем запуска сценария здесь: «superuser.com/questions/109213/how-do-i-list-the-ssl-tls-cipher-suites-a-particular-website-offers»)

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 
**TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA** 
**TLS_ECDHE_RSA_WITH_RC4_128_SHA** 
TLS_RSA_WITH_AES_128_GCM_SHA256 
TLS_RSA_WITH_AES_128_CBC_SHA256 
TLS_RSA_WITH_AES_128_CBC_SHA 
SSL_RSA_WITH_RC4_128_SHA 
SSL_RSA_WITH_RC4_128_MD5 
TLS_RSA_WITH_AES_256_GCM_SHA384 
TLS_RSA_WITH_AES_256_CBC_SHA256 
TLS_RSA_WITH_AES_256_CBC_SHA 
SSL_RSA_WITH_3DES_EDE_CBC_SHA 

Как видно выше, эти два набора соответствуют.

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_RC4_128_SHA

И я проверил сертификат "www.digicert.com/help/" (использование "smtp.gmail.com:465") и получил это: Digicert Screenshot

  • алгоритм Подпись = SHA256 + RSA (отлично)

Это также совпадает

Согласно "tools.ietf.org/html/rfc5246#section-7.2.2"

Reception of a handshake_failure alert message indicates that the 
    sender was unable to negotiate an acceptable set of security 
    parameters given the options available. This is a fatal error. 

Насколько я понимаю, существует и другие причины чем алгоритм шифрования и алгоритм сигнатурного алгоритма для handshake_failure, или я пропускаю что-то очень большое. Я ищу причину неудачи, но я не могу ее найти. Я был бы благодарен за любую помощь или любую идею. Какая может быть причина handshake_failure?

Я очень сожалею о непривязанных ссылках. stackoverflow не позволяет мне добавить более двух ссылок. Я заменю их на регулярные ссылки, если у вас 10 репутаций :)

ответ

1

Я только что наткнулся на это, и я понимаю, что это было давно. Я сожалею, что не нашел этого раньше.

Для пользователей, испытывающих это в будущем однако ...

Я знаю требования при подключении к серверам Google, которые изменились в течение последних 6-9 месяцев. Серверы Google будут игнорировать любую попытку подключения, если клиентский пакет приветствия не включает расширение поддерживаемых кривых.

Не могли бы вы попробовать добавить эти определяет то, до настройки по умолчанию при создании библиотеки wolfSSL с целью подключения к серверам Google ЛЮБЫХ:

#define HAVE_SUPPORTED_CURVES 
#define HAVE_TLS_EXTENSIONS 

(соответствующая опция конфигурирования будет: «--enable-supportedcurves» которые будут определять оба указанных выше макросов препроцессора)

и загружать по меньшей мере, одну кривую, поддерживаемый в любом клиентском приложении с API:

wolfSSL_UseSupportedCurve(ssl, <CURVE NAME>); 

Список поддерживаемых кривых можно найти в разделе комментариев в верхней части (wolfssl-root) /wolfcrypt/src/ecc.c

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

  • Нет связанных вопросов^_^