如何在SSL连接的服务器端接收数据?
问题描述:
我正在尝试学习如何编写客户端/服务器应用程序以使用SSL将文件传入和传出服务器。我主要在C++中使用cURL和/或OpenSSL来了解客户端,但是我很难理解服务器端......我有使用Perl和其他cgi-bin类型脚本的经验,但是我一直无法找到关于如何在服务器端实际接收数据的任何教程,仅涉及证书和身份验证。非常感激任何的帮助!如何在SSL连接的服务器端接收数据?
答
想要使用BIO_s_accept()
函数系列接受通过SSL的连接(示例代码:https://www.openssl.org/docs/manmaster/crypto/BIO_set_bind_mode.html)。您希望BIO_set_accept_bios()
为新连接使用相同的包装,并且BIO_set_bind_mode()
在同一端口上持续监听更多连接。
然后,您可以拨打connection = BIO_pop(accept);
以获取代表每个连接的BIO,您可以将它用于输入和输出。当你完成它时,你可以使用BIO_free()
。
编辑:对于实际的实际使用,请使用scp
而不是重新发明轮子。
我必须有一个程序,然后不断运行在服务器上吗?我有一个虚拟主机帐户,我不知道我会如何设置。 – Willdorf
那么,服务器必须在连接时运行。 'xinetd'可以根据需要启动服务器进程。 – Davislor
我可以在Perl的cgi-bin中设置脚本来接受连接并让我的客户端调用它 – Willdorf