Envío de solicitud de TLS 1.2 en Python 2.6
ssl request (1)
El módulo ssl
en Python 2.6 admite hasta TLS 1.0 solamente. Si no desea introducir dependencias adicionales (como pyOpenSSL como sugiere), deberá actualizar a Python 2.7 o 3.x para obtener soporte para las versiones más nuevas de TLS.
Para forzar una versión particular de TLS en Python 2.7.9 o posterior , construya un SSLContext
con la constante PROTOCOL_*
adecuada. Luego puede usarlo con cualquier API que le permita proporcionar su propio 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)
Para usar una versión de protocolo particular o superior (incluidas las versiones futuras), use ssl.PROTOCOL_SSLv23
y luego deshabilite las versiones de protocolo que no desea usar:
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
En cuanto a utilizar un SSLContext
personalizado con solicitudes para forzar una versión de protocolo particular, de acuerdo con la documentación no parece haber una manera de hacerlo , consulte el siguiente ejemplo de los documentos .
Estoy atrapado usando Python 2.6 y necesito enviar una solicitud posterior usando TLS 1.2. ¿La biblioteca de requests
Python 2.6 es compatible con TLS 1.2? ¿Cómo aseguro / verifico que la solicitud se realiza a través de TLS1.2 y no de otra versión?
Una solicitud de muestra es
r=requests.post(url,data=payload,verify=False)
En algún lugar del foro llegué a saber que necesitamos compilar pyOpenSSL
para apoyar esto. hay una manera mas facil?