Watch at EaseHistorias. Respuestas. Perspectiva.

Tecnología · GUÍA PRÁCTICA

¿Python SSL WRONG_VERSION_NUMBER? Demuestra el esquema del proxy y el extremo TLS

Mapea los esquemas de destino y proxy, ajustes heredados, ruta CONNECT y primer extremo antes de cambiar certificados, versiones TLS o verificación.

Ilustración original de las cuatro rutas entre destino y proxy.
Ilustración original: demuestra en qué extremo comienza TLS. Watch at Ease

WRONG_VERSION_NUMBER suele indicar que los bytes recibidos en un supuesto límite TLS no eran un registro TLS válido para esa conexión. Enviar TLS a un proxy o puerto HTTP en claro es una causa común, pero no la única.

Conserva la URL, los proxies efectivos, el descubrimiento por entorno y sistema, CONNECT y el primer extremo que responde. No uses verify=False para convertir un error de ruta en uno de certificados.

Fija la solicitud y todas las fuentes de proxy

Registra versiones de Python, Requests, urllib3 y OpenSSL, URL, puerto y excepción completa. Conserva PreparedRequest, parámetros, Session, entorno y proxy del sistema.

No cambies todavía confianza o versiones TLS. Compara un entorno limpio con la política de proxy usando un destino inocuo.

Mapea por separado destino y proxy

Un proxy HTTP puede llevar un destino HTTPS mediante CONNECT. En un proxy HTTPS, el cliente primero establece TLS con el proxy.

Por eso HTTPS_PROXY=http://proxy:port puede ser correcto. El nombre de la variable no decide el protocolo del extremo.

Demuestra el primer extremo que recibe TLS

Resuelve host y puerto del proxy efectivo y registra CONNECT y si la primera respuesta parece HTTP en claro, autenticación o TLS. Elimina credenciales de los registros.

Cuando la política lo permita, prueba el puerto de destino directamente. Una URL https:// hacia un puerto HTTP también falla, y un balanceador o interceptor puede cambiar el límite.

Separa errores de certificado y versión

CERTIFICATE_VERIFY_FAILED ocurre tras existir TLS; verify=False no convierte un extremo en claro en TLS. WRONG_VERSION_NUMBER es anterior.

UNSUPPORTED_PROTOCOL es otra rama. Solo después de probar que el extremo usa TLS debes comparar SSLContext y versiones admitidas.

Corrige una fuente y demuestra la salida

Corrige la fuente real: solicitud, Session, entorno, sistema o despliegue. Un proxy HTTP conserva http:// incluso para destinos HTTPS.

Repite con verificación activa; confirma proxy, CONNECT, certificado de destino y respuesta. Reinicia el trabajo real para descartar un éxito exclusivo de un shell limpio.

Ilustración original de solicitud, fuente de proxy, límite y prueba final.
Ilustración original: fija la ruta antes de cambiar certificados o política TLS. Watch at Ease