概念
HTTP
HTTP(HyperText Transfer Protocol:超文本传输协议
)是一种用于分布式、协作式和超媒体信息系统的应用层协议
。
简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。
HTTPS
HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议
或HTT Pover SSL)是一种透过计算机网络进行安全通信的传输协议。
区别
HTTP
- HTTP 默认工作在 TCP 协议
80 端口
- 用户访问网站 以
http://
打头 - HTTP 协议以
明文
方式发送内容,不安全
注:HTTP 协议不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
HTTPS
- HTTPS 默认工作在 TCP 协议
443端口
- 用户访问网站 以
https://
打头 - HTTPS 经由 HTTP 进行通信,但利用 SSL(Secure Socket Layer,安全套接字层)/TLS(Transport Layer Security,运输层安全) 来
加密
数据包。安全
注:HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
- 你也可以说:HTTPS = HTTP + SSL
-
HTTPS 在 HTTP 应用层的基础上使用安全套接字层作为子层。
在讲HTTPS原理之前,先介绍下两类密码体制
当你需要在一个购物网站输入账号以及密码时时,含有你的账号与密码信息的数据会被发送到服务器,在发送的过程中,数据会有两种加密形式——共享密钥加密和公开密钥加密。
共享密钥加密可以这样理解,服务器为了使数据传输更安全,送给你一把钥匙,这把钥匙可以将数据锁在一个盒子里,当然也可以打开已经锁上的盒子。当数据送至服务器时,服务器会用同样的钥匙打开盒子。这种方法的坏处是,一旦贼人得到钥匙,便可以打开已经锁上的盒子。而公开密钥则避免了这种情况。
公开密钥加密会使用两把钥匙,服务器会发送给你一把只能锁上盒子却不能打开盒子的钥匙,而服务器自己会留一把可以打开盒子的钥匙,这样就避免了钥匙在中途被其他人抢走风险。当服务器发回响应时会用同样的方式,只不过留有可以打开盒子钥匙的人变成了你。
密码体制1——对称密钥密码体制
又称为共享秘钥加密,(加密密钥与解密密钥使用相同的密码
)
- 客户端与服务器使用相同的密码对内容进行加密与解密
- 但这样也必须将密钥也发给对方,造成了另一个问题(怎样将密钥安全的发给对方?)
- 任何人只要获取了密钥便可解密密文
- 一旦第三方攻击者获得了密钥,加密也就毫无意义
密码体制2——公钥密码体制
又称为公开秘钥加密,(加密密钥与解密密钥使用不同的密码(但有关联)
)
- 加密密钥也称为
公钥
(public key),是向公众公开的 - 解密密钥也称为
私钥
或秘钥
(secret key),是需要保密的
过程
HTTP
浏览器打开一个 TCP 连接
浏览器发送 HTTP 请求到服务器端
服务器发送 HTTP 回应信息到浏览器
TCP 连接关闭
SSL
验证服务器端
允许客户端和服务器端选择加密算法和密码,确保双方都支持
验证客户端(可选)
使用公钥加密技术来生成共享加密数据
创建一个加密的 SSL 连接
基于该 SSL 连接传递 HTTP 请求
HTTPS
使用 HTTPS 连接时,服务器要求有公钥和签名的证书。
当使用 https 连接,服务器响应初始连接,并提供它所支持的加密方法。
作为回应,客户端选择一个连接方法,并且客户端和服务器端交换证书验证彼此身份。
完成之后,在确保使用相同密钥的情况下传输加密信息,然后关闭连接。
为了提供 https 连接支持,服务器必须有一个公钥证书,该证书包含经过证书机构认证的密钥信息,大部分证书都是通过第三方机构授权的,以保证证书是安全的。
注
如果某个网站要求你填写信用卡信息,首先你要检查该网页是否使用 https 加密连接,如果没有,那么请不要
输入任何敏感信息如信用卡号。