Cosa sono e come si usano le coppie OpenSSL BIO?
Domanda
Che cos'è esattamente una coppia BIO in OpenSSL e come deve essere utilizzata? Ho già controllato i documenti OpenSSL, ma i dettagli sono pochi e rari.
Soluzione
Un BIO in OpenSSL è simile a un handle di file. Ne usi una coppia per comunicare tra loro in modo sicuro come faresti con due prese. La migliore spiegazione che ho trovato è qui .
Sono stato anche molto utilizzato da il sito di Herong Yang pochi mesi fa quando ho dovuto scrivere un'applicazione usando OpenSSL. Le sezioni sulla creazione e la firma dei certificati utilizzando OpenSSL e keytool sono state di grande aiuto quando si è trattato di testare la mia applicazione.
Altri suggerimenti
Una coppia BIO sono due BIO sorgente / sink collegati tra loro. Tutto ciò che è scritto su uno può essere letto dall'altro. Se hai già due BIOS, puoi unirli insieme usando BIO_make_bio_pair. Oppure puoi creare una nuova coppia BIO con BIO_new_bio_pair.
Un uso menzionato nel libro Network Security with OpenSSL (vedi pagina 111) è che la coppia può essere associata a un motore SSL. Qualsiasi cosa scritta nella coppia BIO verrà letta dal motore SSL. È possibile leggere qualsiasi cosa scritta sulla coppia BIO. OpenSSL ne ha un esempio (vedi ssl / ssltest.c)
Ho scoperto che il modo migliore per conoscere OpenSSL era leggere " Sicurezza di rete con OpenSSL " di John Viega, Matt Messier e Pravir Chandra, ISBN 059600270X. Hanno un'intera sezione su come creare e utilizzare la coppia BIO con il codice di esempio.
In uno sforzo di documentazione openssl foundation mantiene un wiki della comunità che può ovviamente essere migliorato. BIO è coperto qui: http://wiki.openssl.org/index.php/BIO.
Ho scritto delle coppie BIO OpenSSL come parte di una risposta generale sui BIO OpenSSL :
A "bio" BIO (
BIO_s_bio
). È un BIO simile a una pipa. È possibile creare una coppia di tali BIO. I dati scritti su un BIO nella coppia verranno inseriti per la lettura sul secondo BIO nella coppia. E viceversa. È simile alla memoria BIO, ma la memoria BIO posiziona i dati su se stessa e la pipe BIO posiziona i dati sul BIO con cui è accoppiata.
E anche qui :
Ma in più c'è un BIO chiamato
BIO_s_bio
che ha una funzionalità simile a una pipe. È possibile creare una coppia di tali BIO. Tutti i dati scritti sul primo BIO nella coppia di oggettiBIO_s_bio
verranno letti dal secondo BIO nella coppia. E viceversa: la scrittura di dati nel secondo BIO comporterà la lettura di questi dati dal primo BIO. Pertanto è possibile utilizzareBIO_s_bio
anzichéBIO_s_mem
. Passare una singola istanza dell'oggettoBIO_s_bio
alla funzioneSSL_set_bio
sarebbe sufficiente. L'applicazione riceve i dati e li scrive nel proprio BIO nella coppiaBIO_s_bio
. OpenSSL otterrà quindi questi dati dal suo BIO nella coppia. OpenSSL scrive i dati sul proprio BIO nella coppia e l'applicazione ottiene a sua volta questi dati dal proprio BIO.