【问题标题】:Why DTLSv1_listen() returns zero?为什么 DTLSv1_listen() 返回零?
【发布时间】:2013-03-07 01:44:59
【问题描述】:

我正在使用示例代码“dtls_udp_echo.c”学习 DTLS...

服务器:“DTLSv1_listen(ssl, &client_addr)”

底层套接字是非阻塞的,但会在可读性时唤醒。

只要客户端执行 SSL_connect(),服务器就会被调用。所以我相信hello是由服务器发送和接收的。但是 DTLSv1_listen() 总是返回零,并且 client_addr 也全为零。我只是不明白有什么问题。

我接受相关帖子的建议添加 SSL_state_string_long()。它在 DTLSv1_listen() 返回 0 后打印“SSL 状态之前/接受初始化”。

感谢您的帮助。

【问题讨论】:

    标签: ssl openssl dtls


    【解决方案1】:

    也许您启用了 cookie 交换?我不确定它是否在较新的 openssl 版本中默认启用。为了防止服务器受到 dos 攻击,hello 消息有不同的行为。客户端发送一个 hello,服务器用一个 helloVerifyRequest 应答。客户端发送一个带有附加 cookie 的 hello。服务器验证这个cookie,当它有效时,正常的握手例程继续。 DTLSv1_listen 在发送此 HelloVerifyRequest 后返回 0。可能那是你的问题。我找到了一个关于客户端服务器与 dtls 通信的近乎完美的文档。这是link

    【讨论】:

      猜你喜欢
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      相关资源
      最近更新 更多