如何用HSTS实现http跳转https?

我们知道,现在大多少浏览器都要使用https加密,对于这种情况,很多站点都使用了http强制跳转https的方法,这种方法有效的解决了http网站在部署了SSL证书后,输入域名直接跳转到https的问题,因为用户首次访问站点的时候其实也是用的是http请求,之后被重定向到了https,如何解决这个问题呢?这里我们要借助一个新的安全协议:HSTS,教你如何用HSTS实现http跳转https。

什么是HSTS

HSTS(HTTP Strict Transport Security)国际互联网工程组织IETE正在推行一种新的Web安全协议,作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。

主要目的是为了解决HTTPS网站首次请求时使用的是未加密的HTTP协议,也就说用户一般访问我们的网站都是直接在浏览器输入域名,比如morong.me,然后我们的服务器检测到是HTTP请求,就301跳转到HTTPS页面。那么前半程采用的就是未加密的HTTP请求,同样存在被劫持的可能,那么HTTPS说好的安全性也就大打折扣了!

开启HSTS

开启HSTS很简单,只要在我们网站的响应头里面新增HSTS即可,下面简单说下

1、Nginx服务器

找到nginx.conf配置文件,在网站的server配置代码里面加入如下代码:

server {

listen xx.xx.xx.xx:443 ssl spdy;

server_name www.gworg.com;

add_header Strict-Transport-Security "max-age=;includeSubdomains"#加入此行代码

…… }

2、Apache服务器

LoadModule headers_module modules/mod_headers.so

Header always set Strict-Transport-Security "max-age=; includeSubdomains; preload"

3、Lighttpd

server.modules += ( "mod_setenv" )

$HTTP["scheme"] == "https" { setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=; includeSubdomains; preload") }

4、通用方法

如果你用的虚拟主机,或者不会折腾WEB软件,那么可以采用更简单的通用方法。原理很简单,通过代码来新增响应头即可,这里只分享一下php的做法,其他语言自行参考:

将如下代码插入到网站根目录的index.php即可:

header("Strict-Transport-Security: max-age=; includeSubdomains; preload");

HSTS有利有弊,启用了的网站如果后期想http访问需要一段时间才可以恢复,另外目前不是所有的浏览器都支持HSTS,所以对于想使用这种方法强制跳转https的用户可以综合考虑下。

当网站部署SSL证书实现HTTPS协议之后,会变得更安全。所以目前已经越来越多的网站实现HTTPS协议,这样增强互联网用户和网站之间的安全连接协议被视为减少用户风险的必要措施,有效地避免了遭受窃听、中间人攻击或数据篡改等问题。HTTPS比以往任何时候都更便利、更便宜,它带来了性能提升和强大的新功能,这些都是HTTP协议所没有的。

打开凤凰新闻,查看更多高清图片

数安时代GDCA也建议各大网站通过部署SSL证书,实现HTTPS加密升级来保护用户的账户和密码等隐私信息,且部署SSL证书后,醒目的标志有助于用户区别假冒钓鱼网站,以防用户有不必要的损失。相较于传统的HTTP明文协议,HTTPS协议可以确保传输数据的完整性和机密性,建立一条从用户端到网站服务器端的加密传输通道,通过复杂的握手协议,确保用户的传输信息不被第三方窃取或篡改。

在中国,通过国际Webtrust标准的认证的CA机构仅3家,具备了国际电子认证服务能力的CA机构,通过国际Webtrust标准的认证意味着CA机构的运营管理和服务水平符合国际标准,并且有能力、有资质提供全球化认证服务,是可靠电子认证服务的有效证明。其中一家就是数安时代GDCA,在国内是一个综合安全实力比较强的CA机构。需要购买SSL证书的企业或站长可以考虑一下,数安时代除了自主品牌GDCA,还有Symantec、Globalsign、GeoTrust等品牌,选择更多,一次性对比,提供行业最优惠的价格。有需要可以到官网咨询客服了解产品。