【发布时间】:2019-05-27 11:37:38
【问题描述】:
我正在使用 openssl 为我的 sip 客户端实现 dtls 支持。我的 SSL_connect 返回 SSL_ERROR_WANT_READ,我的“选择”处理它总是超时。在wireshark中我看到了第一个ClientHello和HelloVerifyRequest,但是第二个带有cookie的ClientHello从来没有出现过。
【问题讨论】:
-
如果您是 DTLS 客户端,那么您的代码应该发送带有 Cookie 的 ClientHello。所以,如果你没有看到它,你的代码可能有错误。
-
你是对的,有另一个套接字在同一个端口上监听。现在在 ServerHelloDone 之后,wireshark 显示从客户端发送的警报。 s_server 上的调试显示此 SSL3 警报读取:致命:内部错误 SSL_accept:在 SSLv3 读取客户端证书中失败 A 错误 140528435164840:错误:14102438:SSL 例程:DTLS1_READ_BYTES:tlsv1 警报内部错误:d1_pkt.c:1173:SSL 警报80号
-
看起来服务器期望客户端发送它的证书,即客户端身份验证和客户端没有要发送的证书或服务器证书验证本身可能失败。 Client 端的 Debug 消息是什么?
-
这是客户端 SSL_CB_HANDSHAKE_START 之前/连接初始化 SSL_CB_LOOP 之前/连接初始化 SSL_CB_LOOP SSLv3 write client hello A SSL_CB_EXIT SSLv3 read server hello A SSL_CB_LOOP DTLS1 read hello verify request A SSL_CB_LOOP SSLv3 write client hello A SSL_CB_LOOP SSLv3 刷新数据 SSL_CB_EXIT SSLv3 读取服务器问候 A SSL_CB_LOOP SSLv3 读取服务器问候 A SSL_CB_LOOP SSLv3 读取服务器证书 SSL_CB_EXIT SSLv3 读取服务器密钥交换 SSL_CB_ALERT 致命内部错误 SSL_CB_EXIT 错误
-
在摄取 SSL 证书和密钥交换消息后似乎引发了错误。服务器证书验证很可能失败。您是否加载了在客户端验证服务器证书所需的 CA 证书?