2012-06-15 10 views
11

È possibile utilizzare TLSv.1.2 o TLSv1.1 con Ruby?È possibile abilitare TLS v1.2 in Ruby? Se é cosi, come?

ho compilato una versione di Frankenstein di Ruby usando OpenSSL 1.0.1c (l'ultimo disponibile) e l'essere unica differenza è SSLv2 è ora un'opzione in OpenSSL::SSL::SSLContext::METHODS

E 'possibile aggiungere a quella lista TLSv1.2 ?

+0

Un prerequisito correlato è OpenSSL 1.0.0 e versioni successive. OpenSSL 0.9.8 non * non * fornisce i protocolli o le suite di crittografia. – jww

risposta

25

Sì, abbiamo aggiunto TLS 1.1 & 1.2 supporto recently. E 'facile come impostazione ssl_version sul SSLContext:

ctx = OpenSSL::SSL::SSLContext.new 
ctx.ssl_version = :TLSv1_2 

Si può ancora continuare a utilizzare il più generico :SSLv23 per la massima interoperabilità. Avrà l'effetto che verrà utilizzato il nuovo protocollo supportato dal peer per la connessione. Se il tuo pari comprende TLS 1.2, verrà utilizzato. Ma contrariamente al campione precedente, se il peer non parla 1.2, l'implementazione tornerà silenziosamente alla versione migliore/più recente che il peer compie - mentre nell'esempio sopra, la connessione verrebbe rifiutata dal peer se non ha riconosciuto 1.2.

Per ulteriori dettagli, hanno anche uno sguardo al OpenSSL's own docs in materia, è possibile trasferire ciò che si dice su di TLSv1_method TLSv1_1_method e TLSv1_2_method (rappresentato in Ruby rispettivamente come :TLSv1, :TLSv1_1 e :TLSv1_2).

Se il tuo OpenSSL sottostante supporta TLS 1.2 (> = 1.0.1 fa), sei a posto. Tuttavia, ciò richiede al momento una build Ruby dal trunk. Ma se nel frattempo non otteniamo feedback negativi, potrebbe essere che verrà riavviato alla successiva versione 1.9.3.

+0

Mi piacerebbe avere questo backported, c'è qualcosa che posso fare per aiutare? – lcarpenter

+0

A meno che non ci saranno lamentele nell'immediato futuro, sono abbastanza fiducioso che questo sarà sostituito alla prossima versione 1.9.3. Se desideri accelerare la procedura, puoi aprire un ticket su http://bugs.ruby-lang.org/projects/ruby-193, assegnarlo a me e comunicarmi il backport r35549 e r35567 :) – emboss

+0

@ rilievo è mai stato questo backport a 1.9.3? –

Problemi correlati