{"id":113,"date":"2012-06-15T09:22:35","date_gmt":"2012-06-15T17:22:35","guid":{"rendered":"http:\/\/unmitigatedrisk.com\/?p=113"},"modified":"2012-06-16T16:35:30","modified_gmt":"2012-06-17T00:35:30","slug":"whats-your-organizations-policy-on-ssl","status":"publish","type":"post","link":"https:\/\/unmitigatedrisk.com\/?p=113","title":{"rendered":"What is your organizations policy on SSL?"},"content":{"rendered":"<p>In other posts\u00a0I discussed how to redirect the initial request to a website from the HTTP version to the HTTPS \u00a0(for\u00a0<a href=\"http:\/\/unmitigatedrisk.com\/?p=108\">Apache<\/a>\u00a0and\u00a0<a href=\"http:\/\/unmitigatedrisk.com\/?p=111\">IIS<\/a>).<\/p>\n<p>By following those steps your website no longer will serve HTTP content but users will still be able to get to your site without having to know to type the HTTPS:\\\\ before they browse to your site.<\/p>\n<p>This is an important part of making your site reachable by users over SSL because:<\/p>\n<ol>\n<li>Most users do not type a URL moniker at all when entering an URL.<\/li>\n<li>Since 99% of the traffic on the Internet is not available over HTTPS so browsers default to HTTP.<\/li>\n<li>Existing HTTP URLs that have been indexed by search engines, embedded in documents, passed off in emails can continue to work.<\/li>\n<\/ol>\n<p>This approach isn&#8217;t perfect, for example:<\/p>\n<ol>\n<li>An attacker can perform a Man-In-The-Middle on the initial request and bypass the SSL protection (see <a href=\"http:\/\/www.thoughtcrime.org\/software\/sslstrip\/\">sslstrip<\/a>).<\/li>\n<li>It has the potential to \u201ctrain users\u201d to not navigate to the HTTPs version of your site initially.<\/li>\n<\/ol>\n<p>The problem is of course that the alternative of returning an error when a user requests the HTTP version of the website (say a <a href=\"http:\/\/en.wikipedia.org\/wiki\/HTTP_403\">403.4 \u2013 SSL required<\/a>) or simply not having a server listening on the HTTP port is almost the same as saying your site isn\u2019t accessible to the mainstream users.<\/p>\n<p>So how can you manage these problems? There are a few things you can do:<\/p>\n<p>For sensitive services like those for login and those that collect personal information or credit cards actually use <a href=\"http:\/\/en.wikipedia.org\/wiki\/HTTP_403\">403.4 errors<\/a>. This tells the user in no uncertain terms that SSL is required for that task but since the browsing experience does not typically \u201cstart here\u201d you do break the user experience for your users.<\/p>\n<p>You may also want to consider hosting the most sensitive content like login and account details on a separate virtual host that does not have a HTTP listener (for example login.example.com or accounts.example.com).<\/p>\n<p>Next you should communicate your policy on SSL to the web browsers so they can do the right thing for the users, there are several ways for you to do this:<\/p>\n<ol>\n<li>Set the HTTP <a href=\"http:\/\/en.wikipedia.org\/wiki\/HTTP_Strict_Transport_Security\">Strict-Transport-Security<\/a> (HSTS) header for your pages this will tell the browsers to require SSL on your site.<\/li>\n<li>Request that your site be added to the\u00a0<a href=\"https:\/\/www.eff.org\/https-everywhere\/rulesets\">HTTPS Everywhere Rule list<\/a>.<\/li>\n<li>Request that your site be added to the <a href=\"http:\/\/dev.chromium.org\/sts\">Preloaded HSTS list<\/a> in Google Chrome.<\/li>\n<li>If you are a larger site you can also <a href=\"http:\/\/www.imperialviolet.org\/2011\/05\/04\/pinning.html\">request that Google \u201cpin\u201d your web server\u2019s public keys to your domain<\/a>.<\/li>\n<\/ol>\n<p>These things will not eliminate these risks but it does help, especially for those using browsers that support HSTS (Chrome and Firefox as of today) or those that are using plugins like <a href=\"https:\/\/www.eff.org\/https-everywhere\">HTTPS Everywhere<\/a> and <a href=\"http:\/\/noscript.net\/\">NoScript<\/a>.<\/p>\n<p>As for the last two, they are clearly Chrome specific but it represents <a href=\"http:\/\/gs.statcounter.com\/\">about 32% of the browser market today<\/a> and as such is worth paying attention to.<\/p>\n<p>Ryan<\/p>\n<h5><\/h5>\n<h6>Additional Resources<\/h6>\n<p><a href=\"https:\/\/www.eff.org\/https-everywhere\/deploying-https\">How to Deploy HTTPS Correctly<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In other posts\u00a0I discussed how to redirect the initial request to a website from the HTTP version to the HTTPS \u00a0(for\u00a0Apache\u00a0and\u00a0IIS). By following those steps your website no longer will serve HTTP content but users will still be able to get to your site without having to know to type the HTTPS:\\\\ before they browse [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[3,4],"tags":[31,33,168,6],"class_list":["post-113","post","type-post","status-publish","format-standard","hentry","category-security","category-thoughts","tag-apache","tag-iis","tag-security","tag-ssl"],"_links":{"self":[{"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=\/wp\/v2\/posts\/113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=113"}],"version-history":[{"count":0,"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=\/wp\/v2\/posts\/113\/revisions"}],"wp:attachment":[{"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unmitigatedrisk.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}