2016-01-14 5 views
0

У меня есть версия OpenSSL предварительно установлена ​​в Ubuntu 14.04поддержка OpenSSL для DTLS v1.2

OpenSSL 1.0.1f 6 Jan 2014 

Это самая последняя из доступных в Ubuntu. Теперь вопрос после SSL_library_init(); я призвал DTLSv1_2_client_method();, когда я составил код он показал:

DTLS_test.c:20:12: warning: assignment makes pointer from integer without a cast [enabled by default] 
    method = DTLSv1_2_client_method(); 
      ^
/tmp/ccRUlnEu.o: In function `init_lib': 
DTLS_test.c:(.text+0x13): undefined reference to `DTLSv1_2_client_method' 
collect2: error: ld returned 1 exit status 

Но если я изменяю method = DTLSv1_client_method(); Это только показывает предупреждение, связанные с литой

DTLS_test.c:20:12: warning: assignment makes pointer from integer without a cast [enabled by default] 
    method = DTLSv1_2_client_method(); 
      ^

приведен фрагмент кода следует:

#include <openssl/ssl.h> 
#include <openssl/bio.h> 
#include <openssl/err.h> 
#include <openssl/rand.h> 
#include <openssl/dtls1.h> 
#include "DTLS_test.h" 

void init_lib (void) { 

    if(SSL_library_init()) { 
     printf("\n[OK] SSL library initialized"); 
    } 
    else { 
     printf("\n[ERROR] SSL library initiate FAILED !"); 
     exit(0); 
    } 
    SSL_METHOD *method = NULL; 
    method = DTLSv1_2_client_method(); 
    SSL_CTX *ctx = NULL; 
    ctx = SSL_CTX_new(method); 
    if(ctx != NULL) { 
     printf("\n[OK] SSL Method created"); 
    } 
    else { 
     printf("\n[ERROR] SSL Method FAILED !"); 
     exit(0); 
    } 
} 
void main (void) { 
    init_lib(); 
    printf("\n"); 
} 

Я загрузил источник openssl из git, а также i nstalled, но версия openssl не изменилась. И я не смог скомпилировать. Кто-нибудь предлагает любое исправление?

ответ

2

DTLSv1.2 не поддерживается в OpenSSL 1.0.1. Для этого вам нужно 1.0.2.

Какую версию вы пытались установить из git? По умолчанию, при установке самостоятельно, OpenSSL будет устанавливать на «/ usr/local/ssl». Он не заменит системную версию OpenSSL, поэтому вам нужно будет убедиться, что вы используете корневые пути include/library - иначе вы просто заберете старую версию системы.

Compile с:

gcc DTLS_test.c -I/usr/local/ssl/include -L/usr/local/ssl/lib -o DTLS_test -lssl -lcrypto 
+0

Я скачал 1.0.2 с OpenSSL и установил его. Теперь команда openssl version показывает мне: OpenSSL 1.0.2e 3 декабря 2015 г. Но проблема все еще существует. Я скомпилировал с -lss и -lcrypto – Zim

+0

Я обновился до OpenSSL 1.1.0-pre2-dev xx XXX xxxx, но проблема все еще существует gcc DTLS_test.c -I/usr/local/ssl/-lssl -lcrypto -o DTLS_test – Zim

+0

Попробуйте: gcc DTLS_test.c -I/usr/local/ssl/include -L/usr/local/ssl/lib -o DTLS_test -lcrypto -lssl –

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

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