2011-06-14 22 views
11

que tienen una aplicación cliente que se conecta a un servicio web a través de HTTPS. Necesito "oler" todo el tráfico de red entre el servicio web y mi cliente para comprobar si todo está bien, es decir, que tengo que depurar la conexión.cómo depurar una conexión ssl?

He intentado Wireshark pero como no tengo la clave privada del servidor, los datos que se muestran en la pantalla wireshark están, por supuesto, encriptados.

¿Hay alguna manera de observar el tráfico de red ssl entre mi cliente y el servicio web cuando no tengo acceso al servidor y, por lo tanto, a las claves privadas y otras cosas relacionadas?

Gracias de antemano.

Respuesta

4

Ver esto: Debugging SSL communications.

Sé teóricamente que se puede hacer: puede configurar un proxy que se comunique con el servicio web de destino, apunte a su aplicación para conectarse a través de este proxy. Es una limitación conocida: Https supone que confías en todos los proxy y certificados instalados en tu máquina. Es una forma de Man-in-the-middle attack.

Ver si Fiddler sería de alguna utilidad.

Man-in-the-middle attacks

En un ataque man-in-the-middle, el atacante intercepta el tráfico de usuarios para capturar credenciales y otra información relevante . El atacante utiliza esta información para acceder a la red destino real. Durante el proceso , el atacante normalmente sirve como un proxy/puerta de enlace que presenta un sitio VPN SSL falso para el usuario; este proxy/pasarela pasa lo la autenticación del usuario ingresa a el sitio de destino real.

+0

Un proxy HTTP no le permitirá ver el tráfico HTTPS para el que se utiliza: lo retransmite todo directamente al servidor de destino. (Sin embargo, puede ver la dirección y el puerto del servidor) – Bruno

+0

@Bruno, un proxy HTTP regular no lo hará, pero puede tener un proxy que lo haga. Hay herramientas de monitoreo corporativo que simplemente hacen eso. Se basa en agregar un certificado confiable en su máquina y el proxy encubriendo todas las comunicaciones con el servidor HTTPS. – YetAnotherUser

+0

no, no tiene que confiar en que el proxy HTTP para la conexión HTTPS sea seguro, solo los certificados CA en su máquina. Un proxy HTTP no intercepta ni altera una conexión HTTPS, apenas la reenvía, se incluye todo el intercambio SSL/TLS (consulte el método HTTP 'CONNECT'). – Bruno

0

Si no tiene acceso a la clave privada del servidor, no hay mucho que pueda hacer para ver qué está protegido por SSL/TLS. (Podrá ver el saludo inicial al menos.)

Si tiene control total sobre el cliente, podría escribir un servidor falso que tendría una clave privada y un certificado que usted controla, y que transmitiría todo enviado por el cliente al servidor real. Para esto, necesitarás hacer que el cliente confíe en tu propio certificado, por lo tanto, necesitas el control del cliente. Podría ser más fácil para modificar el archivo hosts correspondiente en el cliente para realizar la suplantación de DNS también, para hacer conexiones con el nombre de host correcto ir a su servidor falso en su lugar.

4

¿Tiene instalado Python?

PIP instalar mitmproxy

mitmproxy -p 1234

incluso un video para usted

(por cierto, tuve que apt-get install python-lxml en Debian Squeeze después de un apt obtener actualización)

2

Burp Suite (incluso la versión gratuita) le permite establecer un "proxy" SSL, presentará un certificado diferente a su aplicación y se descifrará (y mostrará) el tráfico por usted. Y si quiere probar con el servidor en localhost también, también le permite configurar el proxy (algo que no he podido hacer con Wireshark en Windows y Fiddler).

Cuestiones relacionadas