2016-11-01 2 views
2

Я пытаюсь скомпилировать и запустить пример с libest (клиент-простой). Для этого я скомпилировал OpenSSL на окнах, а затем скомпилировал и связал libest с этим.OpenSSL 1.0.2 и ошибка «SSL_CTX_new: библиотека не имеет шифров»

Проблема заключается в том, что, когда я запускаю программу, я получаю error:140A90A1:SSL routines:SSL_CTX_new:library has no ciphers:

enter image description here

Глядя на код в отладчике, я могу подтвердить, что OPENSSL_add_all_algorithms_noconf вызывается, а также:

  • ERR_load_crypto_strings()
  • ENGINE_load_builtin_engines();
  • SSL_library_init();
  • SSL_load_error_strings();

Что может отсутствовать/должны быть настроены, чтобы OpenSSL найти шифры? Если я запустил openSSL.exe, который я создал в то же время, что и .lib и .dll для openSSL, он перечисляет много шифров.

Фактический вызов, вызывающий ошибку, составляет SSL_CTX_new(SSLv23_client_method())). Но это не изменится, если я изменю клиентский метод.

Почему я столкнулся с ошибкой и как ее исправить?

+0

Я не уверен насчет порядка вызовов, которые вы указали. См. Также [Инициализация библиотеки] (https://wiki.openssl.org/index.php/Library_Initialization) в вики OpenSSL. – jww

ответ

1

Вам необходимо использовать TLS 1.1 или выше. Вероятно, вам также потребуется указатель имени сервера (SNI). SNI зачисляется -servername ниже.

Нам нужно больше узнать о коде, чтобы узнать, где находится проблема. Тем временем вы можете посетить SSL/TLS Client на вики OpenSSL. (Похоже, на данный момент сайт проходит некоторое обслуживание. Вот архивная версия от the Wayback machine).

TLS 1.2:

$ openssl s_client -connect testrfc7030.cisco.com:9443 -servername testrfc7030.cisco.com -tls1_2 
... 
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384 
Server public key is 2048 bit 
Secure Renegotiation IS supported 
No ALPN negotiated 
SSL-Session: 
    Protocol : TLSv1.2 
    Cipher : ECDHE-RSA-AES256-GCM-SHA384 
    Session-ID: B04740547F80E8F8BFC1B966D28C861F590E7ABB31202E2ED343EFDBA1A08867 
    Session-ID-ctx: 
    Master-Key: C6EF3571832C482E1293E78B0410E544140182858A91DDE16FD32CF248D442673C47C902A560A541B1D6C417E35DF804 
    PSK identity: None 
    PSK identity hint: None 
    SRP username: None 
    Start Time: 1478031623 
    Timeout : 7200 (sec) 
    Verify return code: 20 (unable to get local issuer certificate) 
    Extended master secret: no 

TLS 1.1:

$ openssl s_client -connect testrfc7030.cisco.com:9443 -servername testrfc7030.cisco.com -tls1_1 
... 
New, SSLv3, Cipher is ECDHE-RSA-AES256-SHA 
Server public key is 2048 bit 
Secure Renegotiation IS supported 
No ALPN negotiated 
SSL-Session: 
    Protocol : TLSv1.1 
    Cipher : ECDHE-RSA-AES256-SHA 
    Session-ID: 62324F8BE5178E801F76B4737DD9F711AC0072E885B8748BB5B8F3ED3D16C8DE 
    Session-ID-ctx: 
    Master-Key: 4E44928C5E395E80AEF02533DAA0D237C58B5153CCCA16150B2DEDE361043BFB69D534F52A203084871F1683BDB241EF 
    PSK identity: None 
    PSK identity hint: None 
    SRP username: None 
    Start Time: 1478031773 
    Timeout : 7200 (sec) 
    Verify return code: 20 (unable to get local issuer certificate) 
    Extended master secret: no 

TLS 1.0:

$ openssl s_client -connect testrfc7030.cisco.com:9443 -servername testrfc7030.cisco.com -tls1 
CONNECTED(00000003) 
write:errno=54 
--- 
no peer certificate available 
... 
New, (NONE), Cipher is (NONE) 
Secure Renegotiation IS NOT supported 
No ALPN negotiated 
SSL-Session: 
    Protocol : TLSv1 
    Cipher : 0000 
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    PSK identity: None 
    PSK identity hint: None 
    SRP username: None 
    Start Time: 1478031817 
    Timeout : 7200 (sec) 
    Verify return code: 0 (ok) 
    Extended master secret: no 
1

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

Ссылка репо: SSL TCP-Server

После этого я ввел строку в мой код:

$ SSL_library_init();

Эта линия решить мою проблему. Здесь вы можете найти мой код: TCP Client-Server with Open SSL

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