OpenSSL中的BIO对究竟是什么,它是如何使用的?我已经检查了OpenSSL文档,但任何细节都很少。
答案 0 :(得分:11)
OpenSSL中的BIO类似于File句柄。您可以像使用两个插槽一样安全地使用它们。我发现的最佳解释是here。
几个月前,当我不得不使用OpenSSL编写应用程序时,我在Herong Yang's site中也得到了很多用处。在测试我的应用程序时,使用OpenSSL和keytool创建和签署证书的部分是一个很大的帮助。答案 1 :(得分:7)
BIO对是绑定在一起的两个源/接收BIO。写入一个的任何东西都可以从另一个中读取。如果您已经有两个BIOS,可以使用BIO_make_bio_pair将它们连接在一起。或者您可以使用BIO_new_bio_pair创建新的BIO对。
网络安全与OpenSSL一书(参见第111页)中提到的一个用途是该对可以绑定到SSL引擎。写入BIO对的任何内容都将由SSL引擎读取。可以读取写入BIO对的任何内容。 OpenSSL有一个这样的样本(参见ssl / ssltest.c)
答案 2 :(得分:5)
我发现了解OpenSSL的最佳方式是阅读John Viega,Matt Messier和Pravir Chandra编写的“使用OpenSSL的网络安全”,ISBN 059600270X。他们有关于如何使用示例代码创建和使用BIO对的整个部分。
答案 3 :(得分:1)
为了记录文档,openssl基金会维护了一个社区维基,当然可以对其进行改进。 BIO在此处介绍:http://wiki.openssl.org/index.php/BIO。
答案 4 :(得分:1)
我已经将OpenSSL BIO对作为a general answer about OpenSSL BIOs的一部分进行了撰写:
“生物” BIO(
BIO_s_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中获取此数据。