HTTPS(安全套接字层超文本传输协议)
我们知道http协议传输的数据都是未加密的,也就是明文传输(内容容易被窃听)、不验证通信方身份(容易伪装)、无法确定报文完整性(内容易被篡改)、是不安全的。因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。为了解决这个问题我们的Https就产生了。
HTTPS在HTTP的基础上加入了SSL(安全套接层)协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。(SSL 协议就是用来解决 HTTP 传输过程的不安全问题,到了1999年,SSL 因为应用广泛,已经成为互联网上的事实标准。IETF 就在那年把 SSL 标准化。标准化之后的名称改为 TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”。可以说ssl和tsl是同一事物的不同阶段)
工作原理
- Client 使用https的URL访问 Server,要求与 Server 建立 SSL 连接
- Server 把事先配置好的公钥证书返回给客户端。
- Client验证公钥证书:比如是否在有效期内,证书的用途是不是匹配Client请求的站点,是不是在CRL吊销列表里面,它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书)。如果验证通过则继续,不通过则显示警告信息。
- Client使用伪随机数生成器生成加密所使用的对称密钥,然后用证书的公钥加密这个对称密钥,发给Server。
- Server使用自己的私钥(private key)解密这个消息,得到对称密钥。至此,Client和Server双方都持有了相同的对称密钥。
- Server使用对称密钥加密“明文内容A”,发送给Client。
- Client使用对称密钥解密响应的密文,得到“明文内容A”。
- Client再次发起HTTPS的请求,使用对称密钥加密请求的“明文内容B”,然后Server使用对称密钥解密密文,得到“明文内容B”。
Https与Http的区别
- HTTP 明文传输,数据都是未加密的,安全性较差 H T T P S ( S S L + H TTP) 数据传输过程是加密的,安全性较好。
- 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
- HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
- http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
- HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。