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

StackOverflow https://stackoverflow.com/questions/439407

  •  22-07-2019
  •  | 
  •  

Вопрос

Что такое пара 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top