Что такое и как использовать пары OpenSSL BIO?

Что такое пара BIO в OpenSSL и как она предназначена для использования? Я уже проверил документы OpenSSL, но никаких подробностей мало.

Ответы

Ответ 1

BIO в OpenSSL похож на дескриптор файла. Вы используете пару из них для безопасного общения друг с другом, как если бы вы использовали два разъема. Лучшее объяснение, которое я нашел, здесь.

Я также получил много пользы от сайта Херонг Янг несколько месяцев назад, когда мне пришлось написать приложение с использованием OpenSSL. Разделы по созданию и подписанию сертификатов с использованием OpenSSL и keytool очень помогли мне в тестировании моего приложения.

Ответ 2

Пара BIO представляет собой два источника BIO, которые связаны друг с другом. Все, что написано на одном, можно прочитать с другого. Если у вас уже есть два BIOS, вы можете объединить их вместе с помощью BIO_make_bio_pair. Или вы можете создать новую пару BIO с BIO_new_bio_pair.

Одно из упоминаний в Network Security с книгой OpenSSL (см. стр. 111) заключается в том, что пара может быть привязана к механизму SSL. Все, что написано в паре BIO, будет прочитано движком SSL. Все, что записано в пару BIO, можно прочитать. OpenSSL имеет образец этого (см. Ssl/ssltest.c)

Ответ 3

Я нашел лучший способ узнать о том, что OpenSSL должен был прочитать " Сетевая безопасность с OpenSSL" Джона Вига, Мэтта Мессье и Правира Чандра, ISBN 059600270X. У них есть целый раздел о том, как создавать и использовать пару BIO с образцом кода.

Ответ 4

В процессе создания документации openssl Foundation поддерживает вики сообщества, которые, конечно же, могут быть улучшены. BIO здесь: http://wiki.openssl.org/index.php/BIO.

Ответ 5

Я написал о парах OpenSSL BIO как часть общего ответа о OpenSSL BIO:

"Био" БИО (BIO_s_bio). Это трубообразный БИО. Пара таких БИО может быть создана. Данные, записанные в один BIO в паре, будут помещены для чтения второму BIO в паре. И наоборот. Это похоже на память BIO, но память BIO помещает данные в себя, а канал BIO помещает данные в BIO, с которым она связана.

А также здесь:

Но в дополнение к этому есть BIO с именем BIO_s_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.