【发布时间】:2010-10-01 03:56:24
【问题描述】:
OpenSSL 中的 BIO 对到底是什么,它打算如何使用?我已经检查过 OpenSSL 文档,但任何细节都很少。
【问题讨论】:
OpenSSL 中的 BIO 对到底是什么,它打算如何使用?我已经检查过 OpenSSL 文档,但任何细节都很少。
【问题讨论】:
OpenSSL 中的 BIO 类似于文件句柄。您可以使用它们中的一对来安全地相互通信,就像使用两个套接字一样。我找到的最佳解释是here。
几个月前,当我不得不使用 OpenSSL 编写应用程序时,我也从 Herong Yang's site 中得到了很多用处。在测试我的应用程序时,使用 OpenSSL 和 keytool 创建和签署证书的部分对我有很大帮助。
【讨论】:
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)
【讨论】:
我在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 中获取此数据。
【讨论】: