简单的理解HTTPS就是使用SSL/TLS加密内容的、安全的HTTP协议css
HTTPS = HTTP + SSL/TLS html
对称加密:加密和解密使用同一密钥。简单、快速、效率高jquery
非对称加密:加密解密密钥不一样,加密使用公钥、解密使用私钥,私钥只有一人保管,公钥能够有多人知道。安全性更强、但性能消耗比对称加密大ajax
SSL/TLS中同时使用了两种加密方式,创建链接时使用非对称加密传输产生密钥的随机数,连接创建后使用对称加密传输通讯内容api
SSL/TLS的握手过程能够用上图描述浏览器
一、客户端向服务端发送Client Hello,产生随机数random1,并说明客户端支持的加密方式和协议版本安全
二、服务端收到客户端请求后,返回Server Hello,同时携带随机数random2与数字证书,其中公钥在数字证书中一同发送,避免篡改。服务器
三、客户端收到服务端Server Hello后,验证数字证书有效,使用生成随机数random3,并使用公钥加密,发送给服务端session
四、服务端使用私钥解密获得random3dom
五、客户端和服务端根据约定好的加密方式,以及三个随机数生成对话密钥(session key),使用对话密钥加密内容开始双方会话
当使用CDN服务器的时候出于安全考虑不能把密钥交给CDN服务器。
回顾整个握手连接过程,密钥只在解密第三个随机数时使用一次,所以,只须要把这个过程留在本身服务器就能够。CDN服务器把客户端加密的随机数发送给业务服务器,业务服务器将数据解密后传回给CDN服务,其余流程均交给CDN服务
具体流程以下图
对比内容 | HTTPS | HTTP |
是否付费 | 证书大多数需付费 | 无需 |
传输信息方式 | SSL/TLS协议加密信息,更安全 | 明文传输信息 |
端口 | 443 | 80 |
一、窃听风险,第三方可能获取通讯内容
二、篡改风险,通讯内容可能被第三方篡改
三、冒充风险,第三方可能被冒充他人参与通讯
HTTPS 升级指南:http://www.ruanyifeng.com/blog/2016/08/migrate-from-http-to-https.html
注意在HTTPS访问的页面,在请求资源时也须要使用HTTPS,若是使用HTTP在IE中会出现不安全项目弹框
可使用协议相对URL解决这个问题
<img src="https://www.aaa.org/logo.png" alt="" /> <img src="//www.aaa.org/logo.png" alt="" /><!--协议相对URL-->
协议相对URL,如上面代码第二行,即省略URL协议声明的方式,使用了这种方式浏览器会使用页面访问相同的协议请求页面资源
协议相对URL可使用在HTML中的连接中,也可使用在css中。可是在IE6/7中link或@import资源会被下载两次,除此之外没有其余问题
使用场景举例
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js"></script> <link rel="stylesheet" href="//www.ludou.org/style.css" /> <a href="//www.ludou.org/">Ludou</a>
.logo { background: url(//www.ludou.org/logo.png); }
图解SSL/TLS协议:http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html
与HTTP有什么区别?HTTPS的七个误解:https://www.admin5.com/article/20150523/600106.shtml
网站是否须要HTTPS加密:https://www.admin5.com/special/https/