【问题标题】:Are BIO_* calls on server required if the client uses BIO_* calls?如果客户端使用 BIO_* 调用,是否需要在服务器上调用 BIO_*?
【发布时间】:2015-12-20 05:18:23
【问题描述】:

我正在尝试在 C 中实现一个简单的 OpenSSL 客户端/服务器模型,并且对 BIO_* 调用的使用感到好奇,与原始 SSL_* 调用相比,它允许一些不错的功能。

我对此比较陌生,所以我可能完全看错了,但是是否可以在客户端使用 BIO_* 调用,而不是在服务器上使用它?或者要建立连接,必须在客户端和服务器上都发生 BIO_* 握手?

【问题讨论】:

  • 这看起来像是一个特定于 C 的问题,在 StackOverflow 上会更好。
  • 我会试试的。谢谢!

标签: openssl server tcp c client


【解决方案1】:

首先,BIO 有很多种。 BIO 可用于访问本地磁盘文件(或其他操作系统文件,如串行端口)、普通(TCP 或 UDP)套接字或内存缓冲区,就像它们是文件一样(例如,对于 PEM 格式但不在文件中的东西),以进行通信线程之间,并通过加密、散列和编码“过滤”数据。您的问题似乎只涉及类型 SSL 的 BIO。

是的,SSL BIO 只是一个包装器。您可以通过 SSL BIO 上的 BIO_ 调用执行的所有操作也可以通过 SSL_ 调用以及使用 sprintf、sscanf、strcat、memchr 等的一些内部数据操作来完成。特别是,没有任何“在线”(发送在 SSL/TLS 协议中协商的对等方和从对等方接收)是不同的,因为端点使用 BIO;使用 BIO 的端点可以与使用或不使用 BIO 的端点进行完全相同的通信,就像 BIO 或非 BIO 的 OpenSSL 端点可以与使用不同 SSL/TLS 实现而不是任何类型的 OpenSSL 的端点进行通信一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 2011-12-06
    • 2015-11-24
    相关资源
    最近更新 更多