Il modulo ssl
in Python 2.6 supporta solo fino a TLS 1.0. Se non desideri introdurre ulteriori dipendenze (come pyOpenSSL come suggerisci), dovrai eseguire l'aggiornamento a Python 2.7 o 3.x per ottenere supporto per le versioni più recenti di TLS.
Per imporre una particolare versione di TLS in Python 2.7.9 o successiva, construct an SSLContext
con l'appropriato PROTOCOL_*
constant. È quindi possibile utilizzarlo con qualsiasi API che consente di fornire il proprio SSLContext
.
import ssl
import urllib2
ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
# set other SSLContext options you might need
response = urllib2.urlopen(url, context=ctx)
di utilizzare una particolare versione del protocollo o superiore (comprese le versioni future), utilizzare ssl.PROTOCOL_SSLv23
e quindi disattivare la versione di protocollo non si vuole utilizzare:
ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
# allow TLS 1.2 and later
ctx.options |= ssl.OP_NO_SSLv2
ctx.options |= ssl.OP_NO_SSLv3
ctx.options |= ssl.OP_NO_TLSv1
ctx.options |= ssl.OP_NO_TLSv1_1
Come per l'utilizzo di un personalizzato SSLContext
con Richieste per forzare una particolare versione di protocollo,
according to the documentation non sembra essere un modo per farlo
, see the following example from the docs.
Grazie a @frasertweedale. Come posso specificare la versione di TLS durante l'invio della richiesta? – MultipleCrashes
Risposta aggiornata con ulteriori informazioni e esempi di codice del modulo 'ssl'. Sfortunatamente non sembra esserci un modo per farlo con la libreria Richieste. – frasertweedale
E se il server impone la richiesta di TLS 1.2 sarà possibile con la libreria delle richieste in python? Nel mio caso quando ho catturato il pacchetto usando wireshark, ho osservato che la richiesta che stava uscendo dalla macchina client era TLS 1.0 ma i pacchetti catturati sul server erano TLS 1.2. Non sono in grado di capirlo da quando ho inviato una richiesta tramite protocollo e non tramite porta specifica, il server e il client stanno negoziando per comunicare tramite TLS 1.2. Questo link dice che https://luxsci.com/blog/ssl-versus-tls-whats-the-difference.html – MultipleCrashes