Decodificación HTTPS, descifrado SSL

I have a scenario where a TcpListner acts as proxy between client and server. The proxy needs to log all internet traffic. SSL encrypt all the html stuff.

Can I grab the key from the stream to the decrypt the SSL stuff ? If not, i can act as an SSL server. But where is the entry point? When the server tell the client to use ssl ? I can not even see the html text just the headers by encoding the stream from the server to ASCII.

preguntado el 31 de julio de 12 a las 13:07

It's pretty unclear what you're trying to do. -

¿Puede darnos un ejemplo de lo que está tratando de hacer, qué código ha escrito? Además, no está claro si está intentando fuerza SSL o simplemente analizarlo cuando una página está codificada usando SSL. -

este es el tipo de cosas que SSL mitiga. -

Se publicaron dos respuestas explicando todo (por Iridium y Chris) mientras estaba escribiendo: no soy un mecanógrafo muy rápido. -

3 Respuestas

SSL está diseñado para ser seguro contra ataques de intermediarios, por lo que no podrá extraer la clave para descifrar el tráfico. Si su aplicación actúa como un proxy, el único texto no cifrado que probablemente recibirá será la inicial CONNECT solicitud.

Una opción sería hacer lo que hacen varios cortafuegos comerciales para permitir la inspección SSL, que consiste en hacerse pasar por el lado remoto de la conexión con el cliente, estableciendo un flujo SSL separado para cada uno. Para hacer esto, deberá hacer una serie de cosas, y será , solamente funcionará si puede instalar su propio certificado raíz de confianza en todos los clientes que usarán su proxy (por ejemplo, usando la política de grupo de Windows). Si no puedes hacer esto, es mejor que te rindas, ya que hace que lo que intentas hacer sea imposible.

  1. Determine el nombre del servidor al que se conecta el cliente desde el CONNECT solicitud.
  2. Genere un certificado con el CN ​​establecido en el nombre del servidor establecido en el paso 1, firmado por un certificado raíz de confianza para el cliente.
  3. Establish a network connection to the destination host, and using the .NET SslStream para envolver la conexión y llamar AuthenticateAsClient(...).
  4. De nuevo usando SslStream, envuelva el flujo de red entrante del cliente y llame AuthenticateAsServer() utilizando el certificado generado en el paso 2.
  5. Forward data between the two connections, logging it as you require.

Respondido 31 Jul 12, 13:07

Según su pregunta, parece que tiene un cliente, un proxy en el medio y un servidor. El cliente y el servidor usan SSL para comunicarse, y desea que el proxy descifre los mensajes cifrados con SSL entre el cliente y el servidor.

Primera pregunta entonces, ¿el servidor es tuyo? Si no es así, esto es exactamente lo que se supone que debe evitar SSL. La próxima vez que compre algo en Internet con su tarjeta de crédito, piense en lo que podría estar haciendo su ISP si lo que está preguntando fuera posible: podría poner un proxy entre usted y la tienda web y descifrar el número de su tarjeta de crédito, y usted nunca se sabe

Respondido 31 Jul 12, 13:07

Well it IS possible! Just install Fiddler, activate SSL Decryption (Fiddler Options) and start logging. You will see the messages decrypted into plain text in no means. - A. Dzebo

Puede , solamente descifrar un paquete SSL si tiene la clave privada. Examinar Wireshark si desea inspeccionar o registrar el tráfico de Internet, o violinista para una forma práctica de entender el descifrado de HTTPS.

Respondido 31 Jul 12, 13:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.