- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经搜索过 Stack Overflow 和互联网,但我无法找到为什么 ssl_accept() 不断返回的答案:
[DEBUG] SSL_accept() : Failed with return 0
[DEBUG] SSL_get_error() returned : 5
[DEBUG] Error string : error:00000005:lib(0):func(0):DH lib
[DEBUG] WSAGetLastError() returned : 0
[DEBUG] GetLastError() returned : 0
[DEBUG] ERR_get_error() returned : 0
编辑:出于兴趣 ssl_accept() 返回 0,定义为(根据缺乏和无用的 OpenSSL 文档):“TLS/SSL 握手未成功,但已根据 TLS/SSL 协议(protocol)的规范控制和关闭。使用返回值 ret 调用 SSL_get_error() 以查找原因。”
下面是服务器端的代码片段,我可能找错树了,这个问题是由客户端代码引起的吗?
client = accept( server, (sockaddr*) &clientsockaddrin, &len );
SSL* ssl = SSL_new( ctx );
SSL_set_fd( ssl, client );
std::cout << "+--------------------------------------------------+"
<< std::endl;
int r = SSL_accept( ssl );
if ( r != 1 )
{
int err_SSL_get_error = SSL_get_error( ssl, r);
int err_GetLastError = GetLastError();
int err_WSAGetLastError = WSAGetLastError();
int err_ERR_get_error = ERR_get_error();
std::cout << "[DEBUG] SSL_accept() : Failed with return "
<< r << std::endl;
std::cout << "[DEBUG] SSL_get_error() returned : "
<< err_SSL_get_error << std::endl;
std::cout << "[DEBUG] Error string : "
<< ERR_error_string( err_SSL_get_error, NULL )
<< std::endl;
std::cout << "[DEBUG] WSAGetLastError() returned : "
<< err_WSAGetLastError << std::endl;
std::cout << "[DEBUG] GetLastError() returned : "
<< err_GetLastError << std::endl;
std::cout << "[DEBUG] ERR_get_error() returned : "
<< err_ERR_get_error << std::endl;
std::cout << "+--------------------------------------------------+"
<< std::endl;
break;
}
感谢您的帮助,因为这让我发疯:(
最佳答案
[DEBUG] Error string : error:00000005:lib(0):func(0):DH lib
错误发生在 Diffie-Hellman key 交换期间,例如对等方尝试生成连接 key 的位置。这可能有多种原因,例如服务器端给出的无效 DH 参数。使用您当前的代码,很难看出错误的实际位置,但我猜是在设置 ctx 的某个地方,所以也许应该显示代码的相关部分。
关于c++ - OpenSSL ssl_accept() 错误 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23479376/
我已经研究了一段时间,并没有在任何地方看到我完全相同的问题。我只是有一个特定的、非常简单的问题:每当我的 echo_server 尝试运行 SSL_accept() 函数时,它不会阻止服务器等待客户端
我制作了一个带有 SSL 和阻塞套接字的服务器。当我连接 telnet 时(因此它不进行握手),SSL_accept 会无限期地阻塞并阻塞每个新的握手/接受(以及根据定义的新连接)。 我该如何解决这个
我有一个需要升级到 SSL 通信的客户端/服务器通信。目前我有一个发送和接收 tcp 数据的网络套接字。 客户端向服务器发出一个 tcp connect()。 服务器已经实现了接受部分,接受连接后服务
我正在用 C++ 开发客户端和线程服务器,但我遇到了 OpenSSL/TLS 集成的问题。 到目前为止,我已经按照 ThriftServer.cpp 和 ThriftClient.cpp 进行了操作,
几天来,我一直在努力解决这个问题,想弄清楚它们是如何工作的。我已经阅读了文档并查看了一些示例,但我仍然需要指导。 具体来说,当客户端调用 connect() 并成功连接到服务器主机时,我是否应该在它之
我有一个工作的 C++ 系统,我在客户端和服务器之间使用 C openssl 库在两侧建立了 ssl 连接。 系统通过要求客户端证书作为连接的一部分来使用客户端身份验证。客户端证书是自签名的,由签署自
我已经搜索过 Stack Overflow 和互联网,但我无法找到为什么 ssl_accept() 不断返回的答案: [DEBUG] SSL_accept() : Failed with return
为了理解SSL/TLS,我在Windows-7上下载了OpenSSL-1.0.2k并用Cygwin编译 gcc 64 位 编译器。我从 OpenSSL server/client example in
我正在使用 openssl 在 C++ 中编写应用程序,但我似乎无法使 ssl 套接字连接正常工作。 我有一个抽象类,通过继承类使用各种协议(protocol)实现了多个功能,简单的 TCP 和 UD
我正在尝试创建一个客户端/服务器程序,但我发现继续使用数量稀少的 OpenSSL 文档有些困难。 我的问题:SSL_accept 在执行以下代码(简化)时抛出“无效参数”: SSL* ssl = SS
我是 SSL 套接字编程的新手,我的首要任务是让 SSL 服务器客户端正常工作和理解。 我已经获得了网络上的服务器和客户端源代码,并根据我的 openssl 库(从源代码编译)编译了它们。 当我启动服
SSL_accept(ssl) 200ms 正常吗? 作为 Windows 服务运行,用 C++ 编写,使用 MFC 和 Boost。在英特尔至强 e5620 2.4G、4GB 内存和 Win 7 P
我们有 3 个人致力于将 SSL 添加到基于 epoll 的服务器,但在 3 天的沮丧之后,我们决定向全世界寻求帮助。 问题是 SSL_accept() 总是返回 SSL_ERROR_WANT_REA
我使用 Delphi 10.1 Update 2 和 Indy 10.6.2.5341。 我们在 SSL_accept 中遇到访问冲突。如果使用 SSL 设置 TIdTCPServer 并且在 TId
我正在尝试写入 openssl 服务器,但 SSL_Accept 失败并出现错误:FFFFFFFF:lib(255):func(4095):reason(4095)。这个错误代码是什么意思?如何获取
我在尝试接受来自客户端应用程序的 SSL 连接时收到以下错误。我在 HP-UX IA 上使用 openssl 版本 0.9.8。 SSL_accept(40107e50) -1 err: 336285
我是一名优秀的程序员,十分优秀!