Si entiendo la pregunta correctamente, está preguntando si es posible detectar (en el extremo del servidor de una conexión HTTPS) si la conexión proviene de un servidor proxy o un cliente real (un navegador).
(Inicialmente no pude ver cómo el certificado proporcionaría información valiosa, pero ahora me doy cuenta de lo que me perdí antes. Lo que se sugirió es proporcionar al usuario un javascript, activarlo a través del código HTML y el usuario devuelve los datos extraídos del certificado SSL como lo sería el certificado proporcionado por el proxy. Sí, eso debería funcionar y parece un poco improbable que el servidor proxy filtre tales "acciones" del javascript. Sugerencia inteligente ! )
Analizar lo siguiente puede ayudar a descubrir el originador de una conexión:
- ordenamiento de encabezado HTTP
- encabezados HTTP no específicos del navegador
- valores HTTP-cookie
- comportamiento HTTP
Ordenación de encabezado HTTP -
La detección del originador de la conexión debería ser teóricamente posible mediante el análisis del orden de los encabezados HTTP. Los navegadores tienden a estructurar sus encabezados HTTP en "patrones" específicos, utilizando este conocimiento puede ser posible:
- Cree una huella digital única para el proxy al determinar cómo el proxy organiza los encabezados HTTP.
- Por "de antemano" sabiendo cómo los navegadores comunes ordenan sus encabezados HTTP y lo comparan con el orden de la solicitud actual. (Claramente no es la mejor idea ...)
Encabezados HTTP no específicos del navegador -
Es posible que el servidor proxy incluya encabezados HTTP específicos que un navegador no. Estos pueden ser para equilibrar la carga, o solicitar redirecciones de tipo y así sucesivamente.
valores HTTP-cookie -
También es posible que el proxy inserte un valor de cookie específico para establecer una conexión con un servidor específico si se utiliza el equilibrio de carga o la agrupación en clústeres.
Comportamiento HTTP -
Si bien no es exactamente fácil de implementar, puede ser posible detectar la presencia de un proxy al iniciar una serie de códigos de retorno específicos de HTTP y analizar cómo responde el "cliente" a las solicitudes. Quizás esto pueda permitir la detección de un comportamiento inusual que sería considerado poco común para los navegadores normales.
Asumiendo un servidor HTTP Apache puede ser posible usar reglas de seguridad de mod para lograr algunos de los anteriores.
Algunas otras formas, probablemente improbables y poco confiables, de detectar el origen de una conexión serían inspeccionar campos específicos del protocolo (IP / TCP), como sellos de tiempo, opciones de IP. Estos pueden cambiar de maneras particulares asumiendo un origen de servidor proxy.
También puede ser posible determinar el origen en función de los tiempos, a pesar de que estarían sujetos a un poco de vibración y ruido, en teoría podría determinarse si un proxy intercepta la conexión. No estoy sugiriendo que esto sea confiable o incluso posible, pero se puede determinar bastante a través de los tiempos.