在第二个ClientHello之后,DTLS-Server无法正确回答

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在第二个ClientHello之后,DTLS-Server无法正确回答相关的知识,希望对你有一定的参考价值。

我正在使用与UDP不同的网络传输协议构建DTLS服务器和客户端设置。但是这个协议也是不可靠的,因此需要DTLS。该协议使用无线电网络将数据从客户端传输到服务器,反之亦然。为了使其与DTLS兼容,接收的数据然后通过UDP客户端转发到服务器端的DTLS服务器,并通过UDP服务器转发到客户端的DTLS客户端,两者都在localhost上工作。

作为基础,我正在使用mbedTLS的programs / ssl目录中给出的DTLS示例实现。由于所使用的协议在发送的情况下不是紧固件的事实,我通过使用mbedtls_ssl_conf_handshake_timeout函数来调整握手超时,使得没有任何可能干扰实际数据传输的早期重传。这是根据需要工作。

服务器在大约2分钟后收到第一个握手消息(ClientHello)。服务器使用VerifyRequest回答,并在另外3分钟后,服务器收到客户端的答案(ClientHello + Cookie)。但是,不是发送ServerHello,服务器应答另一个VerifyRequest,例如他忘记了第一次初始化ClientHello。

我将收到的ClientHello消息与DTLS-Handshake使用相同设置但UDP作为网络协议产生的一些消息进行了比较,它们几乎相同(除了随机部分和cookie)。

我是否需要调整另一个超时计时器,以便服务器等待第二个ClientHello更长时间?还是有另外一件我忽略的事情?

如果您需要对问题进行进一步描述,我会尝试给他们。

我会感激任何想法或提示。

答案

我为延迟回复道歉 从code可以看到,如果cookie验证失败,则会发送验证请求消息:

if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM &&
    ssl->handshake->verify_cookie_len != 0 )
{
    MBEDTLS_SSL_DEBUG_MSG( 2, ( "client hello was not authenticated" ) );
    MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write server hello" ) );

    return( ssl_write_hello_verify_request( ssl ) );
}

您应该检查f_cookie_check中的mbedtls_ssl_conf_dtls_cookies()实现集。根据你的描述,我假设你正在使用默认的cookie检查,所以你应该检查mbedtls_ssl_cookie_check()问候的原因, Mbed TLS团队成员 罗恩

以上是关于在第二个ClientHello之后,DTLS-Server无法正确回答的主要内容,如果未能解决你的问题,请参考以下文章

在第二个文件中的列之后添加一个文件中的列,同时考虑到这两个文件具有不同的列数

我用Xcode创建了两个view controller,在第二个viewcontroller中添加按钮之后,怎么进行代码关联?

翻转卡不会在第二个动画上保持后部div

AngularJS - 在第一个文本框之后将焦点设置到下一个文本框

阵列适配器在第二个活动中崩溃

# yyds干货盘点 # 怎么在第一个PDF文件的中间,插入第二个PDF文件的内容?