HTTP(HyperText Transfer Protocol,超文本传输协议)被用于在Web浏览器和网站服务器之间传递信息,在TCP/IP中处于应用层 。这里提一下TCP/IP的分层共分为四层:应用层、传输层、网络层、数据链路层; 分层的目的是:分层能够解耦,动态替换层内协议
各个层包含的内容:
应用层:向用户提供应用服务时的通讯活动(ftp,DNS,http)
传输层:网络连接中两台计算机的数据传输(tcp、udp)
网络层:处理网络上流动的数据包,通过怎样的传输路径把数据包传送给对方(ip)
数据链路层:与硬件相关的网卡、设备驱动等等
然而HTTP也有以下明显缺点:
- 通信使用明文,内容可能被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能遭到篡改
- HTTP + 加密 + 认证 + 完整性保护 = HTTPS
- 对称加密 : 加密和解密数据使用同一个密钥 。这种加密方式的特点是速度很快,常见对称加密的算法有 AES;
- 非对称加密: 加密和解密使用不同的密钥,这两个密钥形成有且仅有唯一的配对,叫公钥和私钥 。数据用公钥加密后必须用私钥解密,数据用私钥加密后必须用公钥解密 。一般来说私钥自己保留好,把公钥公开给别人(一般公钥不会单独出现,而是会写进证书中),让别人拿自己的公钥加密数据后发给自己,这样只有自己才能解密 。这种加密方式的特点是速度慢,CPU 开销大,常见非对称加密算法有 RSA 。
有了这些预备知识后,就可以来看看HTTPS是如何怎么做到安全认证的 。
HTTPS单向认证
先来看看单向认证的过程:
文章插图
【HTTPS单向认证、双向认证、抓包原理、反抓包策略】
从上图可以看出,服务端拥有一对非对称密钥:B_公钥和B_私钥 。详细过程如下:
(1)客户端发起HTTPS请求,将SSL协议版本的信息发送给服务端 。
(2)服务端去CA机构申请来一份CA证书,在前面提过,证书里面有服务端公钥和签名 。将CA证书发送给客户端
(3)客户端读取CA证书的明文信息,采用相同的hash散列函数计算得到信息摘要(hash目的:验证防止内容被修改),然后用操作系统带的CA的公钥去解密签名(因为签名是用CA的私钥加密的),对比证书中的信息摘要 。如果一致,则证明证书是可信的,然后取出了服务端公钥
(4)客户端生成一个随机数(密钥F),用刚才等到的服务端B_公钥去加密这个随机数形成密文,发送给服务端 。
(5)服务端用自己的B_私钥去解密这个密文,得到了密钥F
(6)服务端和客户端在后续通讯过程中就使用这个密钥F进行通信了 。和之前的非对称加密不同,这里开始就是一种对称加密的方式
HTTPS双向认证
双向认证和单向认证原理基本差不多,单向认证客户端需要认证服务端,而在双向认证中增加了服务端对客户端的认证
文章插图
双向认证详细过程如下:
(1)客户端发起HTTPS请求,将SSL协议版本的信息发送给服务端 。
(2)服务端去CA机构申请来一份CA证书,在前面提过,证书里面有服务端公钥和签名 。将CA证书发送给客户端
(3)客户端读取CA证书的明文信息,采用相同的hash散列函数计算得到信息摘要(hash目的:验证防止内容被修改),然后用操作系统带的CA的公钥去解密签名(因为签名是用CA的私钥加密的),对比证书中的信息摘要 。如果一致,则证明证书是可信的,然后取出了服务端公钥
推荐阅读
- 淘宝开店要求 淘宝开店认证已通过是不是已经开店成功了
- 安全访问:nginx用户访问认证
- linux+nginx+mysql+php新增https访问
- 局域网MAC地址认证上网如何实现
- 淘宝店铺实名认证怎么弄
- 淘宝实人认证干嘛的 淘宝实人认证怎么做?
- 可以用来实名认证的身份证 实名认证可以用什么证件
- 注册淘宝店需要的条件 淘宝开店需要实名认证吗
- 淘宝开店实名认证需要多久审核完成 淘宝开店审核一般多久通过
- 淘宝账号怎样实名认证 淘宝店铺实名认证怎么弄