对DTLS v1.2的openssl支持

对DTLS v1.2的openssl支持,openssl,dtls,Openssl,Dtls,我在Ubuntu 14.04中预装了openssl版本 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] met

我在Ubuntu 14.04中预装了openssl版本

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");
}
#包括
#包括
#包括
#包括
#包括
#包括“DTLS_test.h”
void init_lib(void){
if(SSL_library_init()){
printf(“\n[OK]SSL库已初始化”);
}
否则{
printf(“\n[错误]SSL库启动失败!”);
出口(0);
}
SSL_METHOD*METHOD=NULL;
方法=DTLSv1_2_客户端_方法();
SSL_CTX*CTX=NULL;
ctx=SSL\u ctx\u新(方法);
如果(ctx!=NULL){
printf(“\n[OK]SSL方法已创建”);
}
否则{
printf(“\n[错误]SSL方法失败!”);
出口(0);
}
}
真空总管(真空){
init_lib();
printf(“\n”);
}

我也从git下载并安装了openssl源代码,但openssl版本没有改变。我无法编译。有人建议修复吗?

OpenSSL 1.0.1不支持DTLSv1.2。你需要有1.0.2才能做到这一点

您试图从git安装哪个版本?默认情况下,在自行安装时,OpenSSL将安装到“/usr/local/ssl”。它不会取代OpenSSL的系统版本,因此您需要确保使用的是正确的include/library路径,否则您只能选择旧的系统版本

编译时使用:

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

OpenSSL 1.0.1不支持DTLSv1.2。你需要有1.0.2才能做到这一点

您试图从git安装哪个版本?默认情况下,在自行安装时,OpenSSL将安装到“/usr/local/ssl”。它不会取代OpenSSL的系统版本,因此您需要确保使用的是正确的include/library路径,否则您只能选择旧的系统版本

编译时使用:

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

我从openssl下载了1.0.2并安装了它。现在openssl版本命令显示:openssl 1.0.2e 2015年12月3日,但问题仍然存在。我使用-lssl和-lcryptoI编译,并进一步升级到OpenSSL 1.1.0-pre2-dev xx XXX xxxx,但问题仍然存在:gcc DTLS_test.c-I/usr/local/ssl/-lssl-lcrypto-o DTLS_testTry:gcc DTLS_test.c-I/usr/local/ssl/include-L/usr/local/ssl/lib-o DTLS_test-lcrypto-lslops。很抱歉应该是:gcc DTLS_test.c-I/usr/local/ssl/include-L/usr/local/ssl/lib-o DTLS_test-lssl-lcrypto@Zim我看到你接受了这个答案,这是否意味着最后的评论有效?马特,如果可以的话,你能把它整合到你的答案中吗?我从openssl下载了1.0.2并安装了它。现在openssl版本命令显示:openssl 1.0.2e 2015年12月3日,但问题仍然存在。我使用-lssl和-lcryptoI编译,并进一步升级到OpenSSL 1.1.0-pre2-dev xx XXX xxxx,但问题仍然存在:gcc DTLS_test.c-I/usr/local/ssl/-lssl-lcrypto-o DTLS_testTry:gcc DTLS_test.c-I/usr/local/ssl/include-L/usr/local/ssl/lib-o DTLS_test-lcrypto-lslops。很抱歉应该是:gcc DTLS_test.c-I/usr/local/ssl/include-L/usr/local/ssl/lib-o DTLS_test-lssl-lcrypto@Zim我看到你接受了这个答案,这是否意味着最后的评论有效?马特,如果答案是这样的话,你能把它整合到你的答案中吗?