2016-05-13 2 views
2

У меня возникли проблемы с использованием WolfSSL. Я попытался задать вопрос на форумах WolfSSL, но регистрация сейчас не работает.Проблема с рукопожатием с WolfSSL

Я использую WolfSSL для разработки простого почтового клиента для Nintendo Wii. WolfSSL - единственная библиотека, которая утверждает, что имеет совместимость с Wii. Я успешно построил библиотеку с помощью devKitPro, и все, кажется, работает, но это не помогает в рукопожатии.

Вот некоторые примеры код:

bool Internet::sslSetup(){ 

    if(wolfSSL_Init() != SSL_SUCCESS){ 
    sslReportError(); 
    return false; 
    } 
    setState("SSL Init"); 

    method = wolfSSLv23_client_method(); 
    if (method == NULL) { 
    sslReportError(); 
    return false; 
    } 
    setState("SSL Method Set"); 

    ctx = wolfSSL_CTX_new(method); 
    wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); 

    if(ctx == NULL){ 
    sslReportError(); 
    return false; 
    } 
    setState("SSL Ctx Init"); 

    sslSocket = wolfSSL_new(ctx); 
    if(sslSocket == NULL){ 
    sslReportError(); 
    return false; 
    } 
    setState("SSL Socket Init"); 

    wolfSSL_set_fd(sslSocket, socket); 
    if(sslSocket == NULL){ 
    sslReportError(); 
    return false; 
    } 
    setState("SSL Socket connected to net socket"); 

    return true; 
} 

У меня нет какого-либо способа отладки на Wii, поэтому я понижен в тексте отладку. Вот мой журнал для отладочного вывода WolfSSL:

13 05 2016 00:55 wolfSSL Entering wolfSSL_Init 
13 05 2016 00:55 wolfSSL Entering WOLFSSL_CTX_new 
13 05 2016 00:55 wolfSSL Entering wolfSSL_CertManagerNew 
13 05 2016 00:55 wolfSSL Leaving WOLFSSL_CTX_new, return 0 
13 05 2016 00:55 wolfSSL Entering wolfSSL_CTX_set_verify 
13 05 2016 00:55 wolfSSL Entering SSL_new 
13 05 2016 00:55 wolfSSL Leaving SSL_new, return 0 
13 05 2016 00:55 wolfSSL Entering SSL_set_fd 
13 05 2016 00:55 wolfSSL Leaving SSL_set_fd, return 1 
13 05 2016 00:55 wolfSSL Entering SSL_connect() 
13 05 2016 00:55 growing output buffer 
13 05 2016 00:55 Shrinking output buffer 
13 05 2016 00:55 connect state: CLIENT_HELLO_SENT 
13 05 2016 00:55 received record layer msg 
13 05 2016 00:55 got ALERT! 
13 05 2016 00:55 Got alert 
13 05 2016 00:55 wolfSSL error occurred, error = 40 
13 05 2016 00:55 wolfSSL error occurred, error = -313 

Любые идеи? Попытка подключиться к smtp.gmail.com на порту 465.

+0

При подключении к серверам Google обычно игнорируется любой пакет «Клиент Hello», который не содержит расширение эллиптической кривой при включении наборов шифров ECC. Начиная с версии 3.10.2, wolfSSL сделал это по умолчанию. (https://github.com/wolfSSL/wolfssl#release-3102-of-wolfssl-has-bug-fixes-and-new-features-including) Если вы работаете со старыми версиями, см. сообщение в блоге, которое было изначально поделились @Mircea Baja в комментариях к принятому ответу ниже. (Ссылка предоставлена ​​здесь) https://www.wolfssl.com/using-supported-elliptic-curves-extension-with-wolfssl/ – Kaleb

ответ

2

Это выглядит как ошибка рукопожатия TLS, потому что:

  • клиент посылает клиенту привет
  • он получил уведомление
  • предупреждение 40 означает ошибка рукопожатия см http://tools.ietf.org/html/rfc5246#section-7.2

Следующие шаги будут заключаться в следующем:

  • выяснить, что это ошибка -313
  • вы можете получить Wireshark след от компьютера в той же сети, чтобы получить более подробную информацию о том, что содержит Sever привет? например это может произойти по нескольким причинам, например. сервер недоволен списком шифров, доступным от клиента.
+1

-313 определяется как: 'FATAL_ERROR = -313,/* recvd alert фатальная ошибка */' Я сделал след проводов, но не могу понять, в чем проблема. Все, что я вижу, это приветствие клиента, и сервер впоследствии отвечает сбоем рукопожатия. Вы можете загрузить трассировку [здесь] (https://drive.google.com/file/d/0BxezHoN6fOJ9cTVVejM4LXhXMDA/view?usp=sharing) –

+1

Это все равно может быть набор шифров, который клиент предлагает, на вашей дампе клиент практически предлагает только комплекты шифрования DHE. Если я подключаюсь к 'openssl s_client -connect smtp.gmail.com: 465', я вижу, что gmail с шифрованием удовлетворен тем, что TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f), который ваш клиент не отправил –

+1

В основном, ребята из Google очень заинтересованы в криптография эллиптической кривой, и ваш клиент не отправил шифр ЕС (вы можете увидеть список наборов шифров, отправленных клиентом, расширив в wirehark клиентское приветственное сообщение, пока не дойдете до Cipher Suites в SSL –

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