Что такое и как использовать пары 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.