Richieste utilizza la libreria standard Python ssl modulo sotto il cofano - questo supporta varie versioni di SSL e TLS. È possibile indicare alle richieste di utilizzare un protocollo specifico (come TLSv1) creando uno HTTPAdapter
che personalizza l'istanza di PoolManager che viene creata.
Ho dovuto fare qualcosa del genere, ma è stato morso dal fatto che stavamo andando anche tramite un proxy - in questo caso il metodo init_poolmanager
non viene chiamato, perché utilizza un ProxyManager
invece. Ho usato questo:
class ForceTLSV1Adapter(adapters.HTTPAdapter):
"""Require TLSv1 for the connection"""
def init_poolmanager(self, connections, maxsize, block=False):
# This method gets called when there's no proxy.
self.poolmanager = poolmanager.PoolManager(
num_pools=connections,
maxsize=maxsize,
block=block,
ssl_version=ssl.PROTOCOL_TLSv1,
)
def proxy_manager_for(self, proxy, **proxy_kwargs):
# This method is called when there is a proxy.
proxy_kwargs['ssl_version'] = ssl.PROTOCOL_TLSv1
return super(ForceTLSV1Adapter, self).proxy_manager_for(proxy, **proxy_kwargs)
qual è la tua versione di Python? Questa [SO Domanda e risposta] (http://stackoverflow.com/questions/18578439/using-requests-with-tls-doesnt-give-sni-support) potrebbe darti alcuni spunti. – Anzel
... e quale libreria ssl in quale versione stai usando? –