2013-09-04 33 views
8

Przeczytałem dokument, który mówi, że Python 2 ma stałą tylko ssl.PROTOCOL_TLSv1 i że ssl.PROTOCOL_TLSv1_1 i ssl.PROTOCOL_TLSv1_2 zostały dodane w Pythonie 3.4. Więc jak mogę używać TLS 1.1 i 1.2 w Pythonie 2?Czy mogę używać TLS w wersji 1.1 lub 1.2 w pythonie 2?

PS. Nie chcę używać protokołu TLS 1.0, ponieważ ma on pewne luki bezpieczeństwa. TLS 1.2 jest teraz najnowszą wersją, więc chcę, aby mój program korzystał tylko z TLS 1.2; jeśli serwer nie obsługuje protokołu TLS 1.2, po prostu spraw, aby połączenie się nie powiodło.

Odpowiedz

1

No nie ma wsparcia planowane TLS 1.1 lub 1.2 w Pythonie 2, patrz:

http://bugs.python.org/issue16692

Stwierdza wyraźnie, że TLS> 1,0 nie zostaną przeniesione do Python 2.7, a opiekunowie Python podano kilka razy, że Python 2.8 się nie wydarzy.

Należy pamiętać, że kilka serwerów obsługuje teraz protokół TLS 1.2. Mam nadzieję, że to się zmieni w przyszłości.

+0

Czy możesz podać link o oświadczeniu opiekunów Pythona, że ​​nie ma on wstecznego TLS> 1.0 do Pythona 2.7? Dzięki – Tian

+0

Czy przeczytałeś mój poprzedni link? :) To właśnie tam: http://bugs.python.org/issue16692#msg189879 –

+3

Mogło być powiedziane, ale prawda jest taka, że ​​istnieje obsługa TLS 1.1 i 1.2 dla Pythona> 2.7.8. Zobacz "Nowość w wersji 2.7.9 "uwaga na dokumentacji ssl: https://docs.python.org/2/library/ssl.html#ssl.PROTOCOL_TLSv1_2 – guival

2

Niedawno musiałem zakończyć połączenie TLSv1.2 z wzajemnie uwierzytelnionym SSL i nie było to na wanilii 2.7.8. Miałem zamiar zacząć boleśnie przenosić moją intensywną aplikację i/o do Pythona 3, zmieniając każdy ciąg na bajty iz powrotem na recv/send. To będzie ssać.

Następnie znalazłem PEP466. Możesz łatwo zastosować łatę od PEP466 (Google it) do wersji 2.7.7 lub 2.7.8, aby uzyskać działanie TLS 1.1 i TLS 1.2.

Łatka dla PEP 466 jest @http://bugs.python.org/file36423/ssl-backport.diff

Również trzeba będzie następującą poprawkę naprawić Unicode związane błąd, który powoduje segfault przy konstruowaniu błędy w kodzie SSL:

ta poprawka jest @http://bugs.python.org/file36017/unicode_fromformat.patch

Ponadto, po zastosowaniu poprawki, należy wykonać następujące czynności technicznie przed konfiguracji i kompilacji:

~/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 

Następnie można skonfigurować & make & & dokonać instalacji i powinno być dobrze, aby przejść w/TLSv1.1 i 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 jest teraz działa dobrze dla mnie, więc nie mam do portu gigantyczną aplikację Pythona 3.

Tak czy inaczej, treść na stronie PEP jest mylące, to sprawia, że ​​dźwięk podobnie jak 2.7.9 w grudniu ma mieć włączone to wsparcie (?), ale nie jestem pewien, czy jest to poprawne, czy jest to tylko ręczne obejście, dopóki nie przeniesiesz swojego kodu do Pythona 3. Przypuszczam, że tak naprawdę nie jest materia.

Powiązane problemy