views:

390

answers:

7

Would like to understand whether the HTTPS body part of the Response is encrypted. Also, in a HTTPS request whether the header are transmitted as plain text / encrypted?

Is there any tool with which I can observe the raw HTTPS traffic without decrypting it.

A: 

Anything sent over https is encrypted using SSL transport

Try WireShark or Fiddler as helpful tools for this.

Chris Ballance
The HTTP header is encrypted too.
Gumbo
Duly noted, thanks Gumbo.
Chris Ballance
+6  A: 

HTTPS is HTTP over SSL. So the whole HTTP communication is encrypted.

Gumbo
This doesn't matter for the posters question, but I feel compelled to point out that browsers will store the URL and subsequent query strings in it's history. So while communication is over SSL, any query string values might be saved by the browser. In otherwords, don't put sensitive information in a query string, even if you are communicating over SSL.
Matt
I don’t know it for sure but I think the server does that in his access logs too.
Gumbo
@Gumbo great point!
Matt
I am more concerned with the proxy servers, they can log the urls and even the request response. So, for sure I know urls are not encrypted, what about the headers and response body?
Ramesh
The whole HTTP communication is encrypted. And URLs are part of the HTTP. Thus they are encrypted too. Just the client’s and server’s IP addresses are not.
Gumbo
Proxy servers cannot see HTTPS URLs, the request, or the response. All they see is a HTTP CONNECT request. You can see exactly what the proxy sees using Fiddler, without turning on the "Decrypt HTTPS traffic" option, which is an option not available to a remote proxy.
EricLaw -MSFT-
A: 

When using HTTPS, the entire content of the request and reply are encrypted, including the headers and body. The HTTP protocol in plaintext happens on top of, TLS or SSL, so what's on the wire is encrypted.

Jared Oberhaus
+1  A: 

YES https flow is encrypted. When an https connection is initialized, it uses a strong encryption algorithm to handshake and agree with other part on a less strong, but much faster encryption algorithm for the flow.

To observe network packets, you can use sniffers like http://www.ethereal.com/.

zim2001
A: 

The entire HTTP session is encrypted including both the header and the body.

Any packet sniffer should be able to show you the raw traffic, but it'll just look like random bytes to someone without a deep understanding of SSL, and even then you won't get beyond seeing the key exchange as a third party.

Edward Kmett
A: 

Any packet capture/sniffing tool can show you the raw HTTPS traffic. To view the actual contents (by decrypting it), use Fiddler.

Sriram Krishnan
+1  A: 

As the other posts say - HTTPS is HTTP (plaintext) wrapped in SSL on top of the TCP/IP layer. Every part of the HTTP message is encrypted. So the stack looks like:

TCP/IP


SSL


HTTP

As far as encryption goes, there is no way to see any part of the HTTP message with SSL around it.

If you need to debug your traffic I suggest the following:

  • Use a network traffic watcher (like Ethereal) to watch the creation of connections. This will let you see the connection be initiated. It will show you the start of the SSL Handshake, details on failures, and when the session is set up, there will be chains of cipher text. The ciphertext is not very useful, but its presence lets you know data is going back and forth.
  • Deubg your http layer in the clear prior to setting up HTTPS. Every application or web server I've ever worked with has let me turn off HTTPS, and host the same set of URLs in the clear. Do this, and watch it with the same network tool.
  • If you get both sides talking with HTTP and everything breaks on HTTPS, it's time to look at either the SSL session establishment or anything in between the two points that may be interrupting the flow.
bethlakshmi