What are the pros and cons of encrypting all HTTP traffic for the whole site through SSL, as opposed to SSL on just the login page?
|
|
Since most of the other answers here deal with the downsides of site-wide SSL (mainly performance issues - btw these can easily be mitigated by offloading the SSL termination, either to an SSL proxy box, or an SSL card), I will point out some issues with having only the login page over SSL, then switching to non-SSL:
|
|||
|
|
The "server overhead" increasing as a significant "con" is a common myth. Google engineers noted that when switching gmail to 100% SSL they deployed no additional hardware, and that SSL accounted for less than 1% increase in CPU load and 2% in network traffic. Stackoverflow also has a few questions dealing with this. |
|||||
|
|
From the zscaler blog entry Why the web has not switched to SSL-only yet?
Summary of challenges (cons):
|
|||||||||||
|
|
Ars Technica has an excellent article explaining some of the challenges in deploying SSL sitewide. One big one: most ad networks do not provide any way to serve ads over SSL. Moreover, if you embed ads (delivered over HTTP) in a main page that's delivered over HTTPS, browsers will issue scary mixed-content warnings, which you do not want to subject your users to. So, ad-supported sites will likely find it very difficult to transition to SSL sitewide. The article also outlines some other challenges, such as third-party widgets, analytics, embedded videos, etc. |
|||||||
|
|
A downside which is missed in the other answers above is the massive reliance these days on content distribution networks (eg Akamai) - many web pages in current usage grab content from a variety of domains so the browser would need to have certs for each of these or warnings would pop up. And then of course, if the attacker used a CDN platform which the browser already had certs for, they may not get a warning when they should. Tricky problem with the way applications and content are currently delivered. |
|||||||
|
|
OK, this is an ancient question, so my answer will probably languish down here at the bottom. However, I have something to add to the 'cons' side. HTTPS Latency: Having a low client-to-server HTTP latency is critical for making fast-loading, responsive websites. And fast page load times increase end user happiness. TCP/IP alone has the famous TCP 3-way handshake, i.e. the initial connection setup for plain HTTP over TCP requires 3 packets. When SSL/TLS is used, the connection setup is more involved, meaning the latency for new HTTPS connections is unavoidably higher than plaintext HTTP. Note that the impact of this can be reduced (but not eliminated) by re-using the HTTPS connection many times, i.e. using persistent connections, and other performance optimizations such as SSL False Start. Modelling exactly how much HTTPS slows down page loads is complicated, because all modern browsers download HTTP objects in parallel whenever possible. Even so, the higher initial connection setup time is both significant and unavoidable with current technology; so the increased new connection latency is an important consideration. |
||||
|
|
|
Pros is definitely increased security. Cons could be relatively slower connections, more intensive CPU usage, required accurate certificates management, some costs for certificate (if you do not use self-signed certs). But in recent times there is a spreading practice to use https and those cons comes to background due to benefit for end-users and increased trust to a company that is providing service. |
|||
|
|
|
Other downsides (touched upon by others) is a lack of caching which will obviously affect speed. Also, some server variables are not available - like HTTP_FORWARDED_FOR I think. |
|||||||
|
|
All good point mentioned here, however, I mis the con cost! And by cost I dont mean only buying the certficate, but having the proper infrastructure to manage certificates, revocations, dedicated crypto modules to decrease CPU load of the webserver, etc. |
|||
|
|
Benefits of keeping the entire site encrypted:
The con: ? Read the testimonials from google and others. It doesn't have to be costly to go 100% https. |
|||
|
|
|
Other answers have asserted a "chicken/egg problem" due to mixed-content warnings that makes the HTTP->HTTPS migration difficult. It is an issue, but I don't think it is as difficult as they make it out to be. Mixed content can be addressed using protocol-relative URLs and the same scanners that you should be using to find XSS problems. RFC 3986 section 4.2 uses the term network-path reference:
First scan your pages until you find all uses of Then set up permanent HTTP->HTTPS redirects so that existing URLs on sites outside your control continue to work and start serving via HTTPS. Using a permanent redirect with aggressive cache headers will help search engines transfer page-rank and speed up the site for return visitors. You should of course keep your scanners looking for mixed content so you catch regressions. |
|||
|
|
|
I know this is an old question/thread, but I just wanted to point out a huge PRO for doing side-side SSL. SPDY Using mod_spdy on Apache requires SSL. I you haven't deployed SPDY yet, get it done! Both Chrome and Firefox support the protocol, as well as Opera. That is about half of your users that will be able to take advantage of SPDY. |
|||
|
|
There is one benefit of using site-wide SSL that nobody has mentioned here: it prevents people from changing your site's content while the content is en route from your server to your clients. This may be important in some places where ISPs cannot be trusted. It is possible for an ISP to modify unencrypted data before it reaches a client, which is undesirable at times. |
|||
|
|
