【问题标题】:What are and how do I use OpenSSL BIO pairs?什么是 OpenSSL BIO 对以及如何使用?
【发布时间】:2010-10-01 03:56:24
【问题描述】:

OpenSSL 中的 BIO 对到底是什么,它打算如何使用?我已经检查过 OpenSSL 文档,但任何细节都很少。

【问题讨论】:

    标签: openssl key-pair


    【解决方案1】:

    OpenSSL 中的 BIO 类似于文件句柄。您可以使用它们中的一对来安全地相互通信,就像使用两个套接字一样。我找到的最佳解释是here

    几个月前,当我不得不使用 OpenSSL 编写应用程序时,我也从 Herong Yang's site 中得到了很多用处。在测试我的应用程序时,使用 OpenSSL 和 keytool 创建和签署证书的部分对我有很大帮助。

    【讨论】:

    • 感谢使用互联网存档而不是原始页面的链接。我从来没有想过,但它很好地解决了“断开链接”问题。
    【解决方案2】:

    BIO 对是绑定在一起的两个源/接收器 BIO。写入其中的任何内容都可以从另一个读取。如果您已经有两个 BIOS,则可以使用 BIO_make_bio_pair 将它们连接在一起。或者您可以使用 BIO_new_bio_pair 创建一个新的 BIO 对。

    Network Security with OpenSSL 一书(参见第 111 页)中提到的一个用途是该对可以绑定到 SSL 引擎。 SSL 引擎将读取写入 BIO 对的任何内容。可以读取写入 BIO 对的任何内容。 OpenSSL 有一个示例(参见 ssl/ssltest.c)

    【讨论】:

      【解决方案3】:

      我在a general answer about OpenSSL BIOs 中写过有关 OpenSSL BIO 对的文章:

      “简历”BIO (BIO_s_bio)。它是一个类似管道的 BIO。可以创建一对这样的 BIO。写入该对中的一个 BIO 的数据将被放置以读取该对中的第二个 BIO。反之亦然。它类似于内存 BIO,但内存 BIO 将数据放置到自身,管道 BIO 将数据放置到与之配对的 BIO。

      还有here:

      但此外还有一个名为BIO_s_bio 的 BIO,它具有类似管道的功能。可以创建一对这样的 BIO。写入BIO_s_bio 对象对中的第一个 BIO 的任何数据都将从该对中的第二个 BIO 中读取。反之亦然:将数据写入第二个 BIO 将导致从第一个 BIO 读取此数据。所以BIO_s_bio可以代替BIO_s_mem。将BIO_s_bio 对象的单个实例传递给SSL_set_bio 函数就足够了。应用程序接收数据并将其写入 BIO_s_bio 对中的 BIO。然后,OpenSSL 将从该对中的 BIO 中获取此数据。 OpenSSL 将数据写入其对中的 BIO,应用程序依次从其 BIO 中获取此数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-26
        • 2022-01-10
        • 2015-03-13
        • 2013-10-25
        • 2014-11-19
        • 1970-01-01
        • 2011-11-01
        相关资源
        最近更新 更多