openssl中调用SSL_accept函数提示错误

编程实战营 2016-05-11 10:15:54
最近在模拟ssl中间人攻击实验,其中使用了ssl的函数SSL_accept,调用后函数返回值小于零,并且错误码是
error:00000000:lib(0):func(0):reason(0)

贴上代码

int main()
{
// 初始化一个socket,将该socket绑定到443端口,并监听
int socket = socket_to_client_init(443);

// 从文件读取伪造SSL证书时需要的RSA私钥和公钥
EVP_PKEY* key = create_key();
// 初始化openssl库
SSL_init();

while (1)
{
struct sockaddr_in original_server_addr;
// 从监听的端口获得一个客户端的连接,并将该连接的原始目的地址存储到original_server_addr中
int socket_to_client = get_socket_to_client(socket, &original_server_addr);
if (socket_to_client < 0)
{
continue;
}

// 新建一个子进程处理后续事宜,主进程继续监听端口等待后续连接
if (!fork())
{
X509 *fake_x509;
SSL *ssl_to_client, *ssl_to_server;

// 通过获得的原始目的地址,连接真正的服务器,获得一个和服务器连接的socket
int socket_to_server = get_socket_to_server(&original_server_addr);

// 通过和服务器连接的socket建立一个和服务器的SSL连接
ssl_to_server = SSL_to_server_init(socket_to_server);
if (SSL_connect(ssl_to_server) < 0)
{
SSL_Error("Fail to connect server with ssl!");
}
printf("%d, SSL to server successed!\n", sum);

// 从服务器获得证书,并通过这个证书伪造一个假的证书
fake_x509 = create_fake_certificate(ssl_to_server, key);

// 使用假的证书和我们自己的密钥,和客户端建立一个SSL连接。至此,SSL中间人攻击成功
ssl_to_client = SSL_to_client_init(socket_to_client, fake_x509, key);
if(ssl_to_client == 0)
{
SSL_Error("SSL to client Failed!\n");
}

//中间人和客户端建立SSL连接
if (SSL_accept(ssl_to_client) <= 0)
{
SSL_Error("Fail to accept client with ssl!");
}
printf("%d, SSL to client successed!\n", sum);

// 在服务器SSL连接和客户端SSL连接之间转移数据,并输出服务器和客户端之间通信的数据
if (transfer(ssl_to_client, ssl_to_server) < 0)
{
break;
}

printf("%d, connection shutdown\n", sum);
shutdown(socket_to_server, SHUT_RDWR);
SSL_terminal(ssl_to_client);
SSL_terminal(ssl_to_server);
X509_free(fake_x509);
EVP_PKEY_free(key);
}
else
{
++sum;
}
}

return 0;
}


主函数流程代码如下
...全文
1043 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
nswcfd 2017-05-02
  • 打赏
  • 举报
回复
load error string之后,有专门的函数打印错误信息。 man err
  • 打赏
  • 举报
回复
我也是这样的

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧