如何在 SSL 连接的服务器端接收数据?

How do I receive data on the server side of an SSL connection?

我正在尝试学习如何编写 client/server 应用程序以使用 SSL 将文件传入和传出服务器。我主要在 C++ 中使用 cURL and/or OpenSSL 弄清楚了客户端,但我在服务器端被难住了......我有使用 Perl 和其他 cgi-bin 类型脚本的经验,但我还没有能够找到关于如何在服务器端实际接收数据的任何教程,仅关于证书和身份验证。任何帮助将不胜感激!

您想使用 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而不是重新发明轮子。