OpenSSL 中的 BIO 对到底是什么,它打算如何使用?我已经检查了 OpenSSL 文档,但任何细节都很少。
3 回答
OpenSSL 中的 BIO 类似于文件句柄。您使用它们中的一对来安全地相互通信,就像使用两个套接字一样。我找到的最好的解释是here。
几个月前,当我不得不使用 OpenSSL 编写应用程序时,我也从Herong Yang 的网站上得到了很多使用。在测试我的应用程序时,使用 OpenSSL 和 keytool 创建和签署证书的部分对我有很大帮助。
BIO 对是绑定在一起的两个源/接收器 BIO。写入其中的任何内容都可以从另一个读取。如果您已经有两个 BIOS,则可以使用 BIO_make_bio_pair 将它们连接在一起。或者您可以使用 BIO_new_bio_pair 创建一个新的 BIO 对。
使用 OpenSSL 的网络安全一书(参见第 111 页)中提到的一种用途是,该对可以绑定到 SSL 引擎。SSL 引擎将读取写入 BIO 对的任何内容。可以读取写入 BIO 对的任何内容。OpenSSL 有一个示例(参见 ssl/ssltest.c)
作为关于 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
函数就足够了。应用程序接收数据并将其写入该对中的 BIOBIO_s_bio
。然后,OpenSSL 将从该对中的 BIO 中获取此数据。OpenSSL 将数据写入其 BIO 中,然后应用程序依次从其 BIO 中获取这些数据。