繁体   English   中英

SSL_accept()不起作用

[英]SSL_accept() Not Working

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

真相是我不知道这意味着什么,而且它真的令人沮丧,因为我认为我错过了一些非常简单的东西,但我不知道这是什么。

这是我的accept函数的代码(之前已初始化SSL_ctx并打开了套接字):

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;

另外,我尝试用“ openssl verify -verbose -purpose sslserver -CAfile'CACertificate''ServerCertificate'”检查我的证书,但它表示我的服务器证书还可以。

欢迎任何帮助,在此先感谢。 希望这真的很愚蠢,我太困惑了,我看不到它。

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

SSL_accept不会为您调用accept 它期望accept已经被调用。

正确的呼叫顺序是:

  1. socket
  2. bind
  3. listen
  4. accept
  5. SSL_new
  6. SSL_set_fd
  7. SSL_accept

https://www.openssl.org/source/下载openssl来源,并查看demos / ssl / serv.cpp。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM