Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSL_accept()不工作_C_Sockets_Ssl_Openssl_Eof - Fatal编程技术网

SSL_accept()不工作

SSL_accept()不工作,c,sockets,ssl,openssl,eof,C,Sockets,Ssl,Openssl,Eof,我已经研究了一段时间了,但在任何地方都没有发现完全相同的问题。我只是遇到了一个非常简单的问题:每当我的echo_服务器尝试运行SSL_accept()函数时,它不会阻止服务器等待客户端连接,函数只会返回0,如果我进入SSL_get_error(),它会给我SSL_error\u SYSCALL,所以我猜问题是,引用手册中的话,“观察到EOF违反了协议。” 事实上,我不知道这意味着什么,这真的令人沮丧,因为我觉得我错过了一些非常简单的东西,但我不知道是什么 下面是我的accept函数的代码(SSL

我已经研究了一段时间了,但在任何地方都没有发现完全相同的问题。我只是遇到了一个非常简单的问题:每当我的echo_服务器尝试运行
SSL_accept()
函数时,它不会阻止服务器等待客户端连接,函数只会返回0,如果我进入
SSL_get_error()
,它会给我
SSL_error\u SYSCALL
,所以我猜问题是,引用手册中的话,“观察到EOF违反了协议。”

事实上,我不知道这意味着什么,这真的令人沮丧,因为我觉得我错过了一些非常简单的东西,但我不知道是什么

下面是我的accept函数的代码(SSL_ctx先前已初始化,套接字已打开):

此外,我还尝试使用“openssl验证-详细-用途sslserver-CAfile'CACertificate''ServerCertificate''检查我的证书,但它会说我的服务器证书没有问题

欢迎任何帮助,提前谢谢。希望这是件很愚蠢的事,我只是太糊涂了,看不见

每当我的echo_服务器尝试运行SSL_accept()函数时,它都不会阻止服务器等待客户端连接

SSL\u accept
不会为您调用
accept
。它希望已经调用了
accept

正确的调用顺序是:

  • socket
  • bind
  • 接受
  • SSL\u新建
  • SSL\u set\u fd
  • SSL\u接受

  • 从下载openssl源代码并查看demos/ssl/serv.cpp。

    你救了我的命!在调用accept()并阻止服务器后,您怎么可能仍然可以执行SSL_new()等操作。?它不会被封锁吗?或者这就是目的?我的意思是,阻塞它直到找到新连接,然后执行SSL部分?@DisplayName After
    accept
    返回您有一个新的客户端连接,并且操作系统开始从后台的客户端(如果有)接收数据,供您进入内核套接字缓冲区,您最终将使用
    read
    /
    recv
    /
    recvmsg
    进行阅读。
    SSL * sslconnection;
    
    if((sslconnection = SSL_new(ctx)) == NULL){
        return NULL;
    }
    
    if(SSL_set_fd(sslconnection, socketd) != 1){
        return NULL;
    }
    
    if(SSL_accept(sslconnection) != 1){
        return NULL;
    }
    
    return sslconnection;