[英]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
已经被调用。
正确的呼叫顺序是:
socket
bind
listen
accept
SSL_new
SSL_set_fd
SSL_accept
从https://www.openssl.org/source/下载openssl来源,并查看demos / ssl / serv.cpp。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.