gpt4 book ai didi

c - SSL_accept() 不工作

转载 作者:太空宇宙 更新时间:2023-11-03 12:58:07 30 4
gpt4 key购买 nike

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

事实上,我不知道那是什么意思,这真的很令人沮丧,因为我认为我错过了一些非常简单的东西,但我不知道是什么。

这是我的接受函数的代码(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'”检查我的证书,但它会说我的服务器证书没问题。

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

最佳答案

whenever my echo_server tries to run SSL_accept() function, it won't block the server waiting for a client to connect

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

正确的调用顺序是:

  1. 套接字
  2. 绑定(bind)
  3. 接受
  4. SSL_new
  5. SSL_set_fd
  6. SSL_accept

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

关于c - SSL_accept() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24288557/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com