2013-09-04 14 views
8

Ho letto un documento che dice che Python 2 ha solo costante ssl.PROTOCOL_TLSv1 e che ssl.PROTOCOL_TLSv1_1 e ssl.PROTOCOL_TLSv1_2 sono stati aggiunti in Python 3.4. Quindi, come posso utilizzare TLS 1.1 e 1.2 in Python 2?Posso usare TLS versione 1.1 o 1.2 in python 2?

PS. Non voglio usare TLS 1.0 perché ha alcuni difetti di sicurezza. TLS 1.2 è la versione più recente ora, quindi voglio rendere il mio programma solo TLS 1.2; se il server non supporta TLS 1.2, allora basta che la connessione fallisca.

risposta

1

No non c'è il supporto previsto per TLS 1.1 o 1.2 in Python 2, vedere:

http://bugs.python.org/issue16692

Essa afferma chiaramente che TLS> 1.0 non saranno backport a Python 2.7 e Python manutentori dichiarato più volte che Python 2.8 non accadrà.

Si prega di notare che pochi server supportano TLS 1.2 per ora. Spero che cambierà in futuro.

+0

Puoi fornire un collegamento sulla dichiarazione dei manutentori Python di non backport TLS> 1.0 a Python 2.7? Grazie – Tian

+0

Hai letto il mio link precedente? :) Esatto: http://bugs.python.org/issue16692#msg189879 –

+3

Potrebbe essere stato detto, ma la verità è che c'è il supporto per TLS 1.1 e 1.2 per python> 2.7.8. Vedi il "Nuovo nella versione 2.7.9 "note sulla documentazione di ssl: https://docs.python.org/2/library/ssl.html#ssl.PROTOCOL_TLSv1_2 – guival

11

Con le mie scuse per la ripetizione di una vecchia domanda, sembra che il supporto per TLS1.1 and TLS1.2 verrà introdotto per Python 2.7.9, previsto per il rilascio intorno a December 2014.

2

Recentemente ho dovuto terminare una connessione TLSv1.2 con SSL autenticati reciprocamente e questo non era il caso di vaniglia 2.7.8. Stavo per iniziare a trasferire dolorosamente la mia rete i/o un'applicazione intensiva a Python 3, cambiando ogni stringa in byte e viceversa per recv/send. Stava per succhiare.

Quindi ho trovato PEP466. È possibile applicare la patch da PEP466 (Google it) a 2.7.7 o 2.7.8 abbastanza facilmente per far funzionare TLS 1.1 e TLS 1.2.

La patch per PEP 466 è @http://bugs.python.org/file36423/ssl-backport.diff

Inoltre, sarà necessario il seguente patch per correggere un bug relativo Unicode che provoca un segfault quando si costruisce errori nel codice SSL:

questa patch è @http://bugs.python.org/file36017/unicode_fromformat.patch

Inoltre, una volta che si applica la patch, si dovrebbe tecnicamente effettuare le seguenti operazioni prima di configurare e la compilazione:

~/Python-2.7.8$ python3 ./Tools/ssl/make_ssl_data.py /usr/include/openssl/ _ssl_data.h 
~/Python-2.7.8$ mv _ssl_data.h Modules/_ssl_data.h 

È quindi possibile configurare & & fare & & fare installazione e dovrebbe essere buono per andare w/TLSv1.1 e TLSv1.2.

~/Python-2.7.8$ ./configure --enable-unicode=ucs2 --prefix=/opt/Python-2.7.8/ --with-pth && make -j && sudo make install 

TLS 1.2 sta lavorando bene per me, quindi non ho in porto un'applicazione gigantesca per Python 3.

In ogni caso, il testo sulla pagina PEP è confusa, si rende il suono ad esempio il 2.7.9 di dicembre dovrebbe avere questo supporto incluso (?) ma non sono sicuro se questo è accurato o se questo è solo una soluzione manuale fino a che non porti il ​​tuo codice a Python 3. Suppongo che non sia realmente importa.

Problemi correlati