20

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

4

3 回答 3

12

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

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

于 2009-01-13T15:43:09.683 回答
7

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

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

于 2011-08-02T00:55:32.010 回答
1

作为关于 OpenSSL BIOs 的一般答案的一部分,我写过关于 OpenSSL BIO 对的文章:

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

还有这里

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

于 2018-08-08T07:41:35.623 回答