Dis*_*ame 2 c sockets ssl openssl eof
我已经研究了一段时间,并没有在任何地方看到我完全相同的问题。我只是有一个特定的,非常简单的问题:每当我的 echo_server 尝试运行SSL_accept()
函数时,它不会阻止服务器等待客户端连接,函数只会返回 0,如果我进入SSL_get_error()
,它会给我SSL_ERROR_SYSCALL
,所以我猜测问题是,从手册中引用,“观察到违反协议的 EOF。”
事实是我不知道这是什么意思,这真的很令人沮丧,因为我认为我错过了一些非常简单的东西,但我不知道是什么。
这是我的接受函数的代码(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;
Run Code Online (Sandbox Code Playgroud)
另外,我尝试使用“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。
归档时间: |
|
查看次数: |
2884 次 |
最近记录: |