【问题标题】:How do I receive data on the server side of an SSL connection?如何在 SSL 连接的服务器端接收数据?
【发布时间】:2015-12-24 11:22:38
【问题描述】:

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

【问题讨论】:

    标签: ssl openssl server client


    【解决方案1】:

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

    【讨论】:

    • 我必须有一个程序然后在服务器上不断运行吗?我有一个网络托管帐户,但我不确定如何设置它。
    • 嗯,服务器必须在您连接到它时正在运行。 xinetd可以根据需要启动一个服务器进程。
    • 我可以在说 Perl 的 cgi-bin 中设置一个脚本来接受连接并让我的客户调用它
    • 在这一点上,我应该提出通过加密连接传输文件到您的网络服务器的方式实际上是scp。在正确配置的服务器上,防火墙将不允许您打开新端口。
    • 好的,我的服务器支持 SSH,所以 SCP/SSH 应该是最简单的路由?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    相关资源
    最近更新 更多