我当前正在编写DTLS服务器。我遇到DTLSv1_Listen的问题,但失败,错误代码为SSL_ERROR_SSL。
握手序列如下: 客户您好 内容类型:握手(22) 版本:DTLS 1.2(0xfefd) 纪元:0 序列号:0 长度:145 握手协议:客户端Hello 握手类型:客户端Hello(1) 长度:133 讯息顺序:0 片段偏移量:0 片段长度:133 版本:DTLS 1.2(0xfefd) 随机:10a0b17d31c7b374d08d51f3fdd3e6b5ecb13658a9e554a3 ... 会话ID长度:0 Cookie长度:0 密码套件长度:6 密码套房(3间套房) 压缩方式长度:1 压缩方法(1种方法) 扩展长度:85 扩展名:ec_point_formats(len = 4) 扩展名:supported_groups(len = 28) 扩展:SessionTicket TLS(len = 0) 扩展名:signature_algorithms(len = 32) 扩展程序:心跳(len = 1)
您好验证请求 内容类型:握手(22) 版本:DTLS 1.2(0xfefd) 纪元:0 序列号:0 长度:35 握手协议:Hello验证请求 握手类型:Hello验证请求(3) 长度:23 讯息顺序:0 片段偏移量:0 片段长度:23 版本:DTLS 1.0(0xfeff) Cookie长度:20 Cookie:c4994e593cd77b26208a374cde0b48372a1636db
DTLSv1.2记录层:警报(级别:致命,描述:握手失败) 内容类型:警报(21) 版本:DTLS 1.2(0xfefd) 纪元:0 序列号:1 长度:2 警报消息
我的ssl上下文是这样初始化的:
SSL_library_init ();
SSL_load_error_strings ();
ERR_load_BIO_strings();
OpenSSL_add_all_algorithms();
pServerContext = SSL_CTX_new(DTLSv1_2_server_method());
if (SSL_CTX_set_cipher_list(pServerContext, "ALL") != 1)
{
getLogger()->error("DTLS : unable to load ciphers, exiting\n");
exit(1);
}
[...设置证书,密钥等...]
返回的Cookie是正确的,我看不出有什么问题。唯一奇怪的一点是在验证请求中发送的Version:DTLS 1.0(奇怪,因为我使用DTLSv1_2_server_method进行了初始化)。 有没有解释为什么它会失败?
感谢您的输入!