WRONG_VERSION_NUMBER con un proxy: comprueba HTTP frente a HTTPS
Diagnostica un desajuste de transporte del proxy antes de rebajar versiones de TLS o cambiar la configuración de certificados por un error SSL engañoso.
El error dice “versión incorrecta”, así que es tentador empezar a cambiar versiones de TLS. Con un proxy, comprueba una posibilidad anterior: ¿envió el cliente un handshake TLS a un puerto que esperaba HTTP simple?
Un destino como https://example.com/ y un proxy como http://proxy.example:8080 son una pareja habitual. Cambiar la segunda URL a HTTPS le dice al cliente que cifre su conversación con el propio proxy. No es una instrucción para permitir sitios HTTPS.
Localiza la primera conversación TLS
Con un proxy HTTP, el cliente puede enviar primero CONNECT y recibir una respuesta HTTP. Solo después inicia el TLS del destino dentro del túnel. Con un proxy HTTPS, primero llega una conexión TLS aparte al proxy.
Un analizador TLS que recibe una página de error HTTP u otro texto plano puede informar de un error de protocolo. La redacción no establece qué versiones de TLS admite el sitio, ni siquiera si se contactó con el sitio.
- Anota la URL del proxy, incluido su esquema, y el protocolo documentado del extremo.
- Averigua si el fallo ocurrió antes de una respuesta CONNECT, durante el TLS del destino o al verificar el certificado del propio proxy.
- Comprueba las versiones reales del cliente y de las dependencias al comparar una solución antigua. Implementaciones anteriores de proxy a veces trataban un esquema de forma distinta.
Varias correcciones pueden ser erróneas por motivos distintos. La lista de proxies HTTP ofrece candidatos habituales de extremo HTTP para peticiones públicas permitidas por esa ruta. Un extremo HTTP simple necesita el esquema de proxy HTTP; un extremo realmente habilitado para TLS debería conservar HTTPS y la verificación de su certificado. Un proxy que rechaza CONNECT necesita un servicio o una política admitidos, no una rebaja arbitraria de la biblioteca.
Quédate con el primer fallo observable. Desactivar la verificación de certificados no puede hacer que un receptor solo HTTP hable TLS, y elegir una política de cifrado antigua no puede explicar un rechazo HTTP enviado antes del handshake del sitio.