Что такое и как я могу использовать пары OpenSSL BIO?
Вопрос
Что такое пара BIO в OpenSSL и как она предназначена для использования? Я уже проверил документы OpenSSL, но никаких подробностей мало. Р>
Решение
BIO в OpenSSL похож на дескриптор файла. Вы используете пару из них для безопасного общения друг с другом, как если бы вы использовали два разъема. Лучшее объяснение, которое я нашел, это здесь .
Я также получил много пользы от сайта Херонга Янга несколько месяцев назад, когда я пришлось написать приложение с использованием OpenSSL. Разделы по созданию и подписанию сертификатов с использованием OpenSSL и keytool оказали большую помощь в тестировании моего приложения.
Другие советы
Пара BIO - это два BIO источника / приемника, которые связаны друг с другом. Все, что написано одному, может быть прочитано другим. Если у вас уже есть два BIOS, вы можете объединить их, используя BIO_make_bio_pair. Или вы можете создать новую пару BIO с помощью BIO_new_bio_pair.
Одно из применений, упомянутых в книге «Сетевая безопасность с OpenSSL» (см. стр. 111), заключается в том, что пара может быть связана с механизмом SSL. Все, что записано в пару BIO, будет прочитано механизмом SSL. Все, что записано в BIO-пару, можно прочитать. В OpenSSL есть пример этого (см. Ssl / ssltest.c)
Я обнаружил, что лучший способ узнать об OpenSSL - это прочитать Сетевая безопасность с OpenSSL " Джон Вьега, Мэтт Мессье и Правир Чандра, ISBN 059600270X. У них есть целый раздел о том, как создать и использовать BIO-пару с примером кода.
В рамках документации openssl Foundation поддерживает вики сообщества, которые, конечно, могут быть улучшены. БИО освещается здесь: http://wiki.openssl.org/index.php/BIOа>. Р>
Я написал о парах OpenSSL BIO в составе общего ответа о OpenSSL BIO :
«био» 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.