WEB协议------HTTPS

WEB协议------HTTP协议

WEB协议------HTTPS

HTTPS协议

HTTP的缺点

  • 通信使用明文(不加密),内容可能会被窃听
  • 不验证通信方的身份,因此有可能遭遇伪装
  • 无法证明报文的完整性,所以有可能已遭篡改

解决方法

HTTP+通信加密+证书+完整性保护=HTTPS
证书:证书可证明服务器或客户端的身份

SSL和TLS

安全套接层俗称Secure Socket Layer(SSL)是由Netscape Communication于1990年开发,用于保障Word Wide Web(WWW)通讯的安全。主要任务是提供私密性,信息完整性和身份认证。1994年改版为SSLv2,1995年改版为SSLv3。
Transport Layer Security(TLS)标准协议由IETF于1999年颁布,整体来说TLS非常类似与SSLv3,只是对SSLv3做了增加和修改。

SSL协议介绍

SSL是一个不依赖于平台和运用程序的协议,用于保障TCP-based运用安全,SSL在TCP和运用层之间,就像运用层连接到TCP连接的一个插口。

SSL加密知名协议

  1. HTTP over SSL:加密网页流量是设计SSL的初衷,HTTP也是第一个使用SSL保障安全的运用层协议。当Netscape在它的Navigator里边运用HTTP over SSL的时候,它使用**https://来标识HTTP over SSL,因此HTTP over SSL就以HTTPS的格式被我们熟知。后来HTTPS在RFC2818被标准化。HTTPS工作在TCP 443号端口,但是普通的HTTP默认工作在TCP 80 端口。
  2. Email over SSL: 类似于HTTP over SSL,邮件协议例如:SMTP、POP3和IMAP也能支持SSL。SMTP over TLS的标准化文档在RFC2487,POP3和IMAP over TLS的标准化文档在RFC2596。

SSL建立的两大阶段

第一阶段:HandShake phase(握手阶段)
A.协商加密算法
B.认证服务器
C.建立用于加密和MAC(Message Authentication Code)用的密钥
(类似于IPSec VPN ISAKMP的作用)
第二阶段:Secure data transfer phase(安全的数据传输阶段)在已经建立的SSL连接里安全的传输数据(类似于IPSec VPN ESP的作用

SSL三大协议

  1. Record protocol
    记录协议是主要的封装协议,它传输不同的高层协议和运用层数据。它从上层用户协议获取信息并且传输,执行需要的任务,例如:分片,压缩,运用MAC和加密,并且传输最终数据。它也执行反向行为,解密,确认,解压缩和重组装来获取数据。记录协议包括四个上层客户协议,Hanshake(握手)协议,Alert(告警)协议,Change Cipher Spec(修改密钥说明)协议,Application Data(运用层数据)协议
  2. Handshake protocols
    握手协议负责建立和恢复SSL会话。用于建立SSL客户和服务器之间的连接,这个过程由如下这几个主要任务组成:1、Negotiate security capabilities(协商安全能力):处理协议版本和安全加密算法。2、Authentication(认证):客户认证服务器,当然服务器也可以认证客户。3、Key exchange(密钥交换):双方交换用于产生master keys(主密钥)的密钥或信息。4、Key derivation(密钥引出):双方引出master secret(主秘密),这个主秘密用于产生用于数据加密和MAC的密钥。
    它由三个子协议组成。
    A.Handshake Protocol(握手协议)协商SSL会话的安全参数
    B.Alert Protocol(告警协议)一个事务管理协议,用于在SSL对等体间传递告警信息。告警信息包括:
    a.errors(错误)
    b.exception condition(异常状况) 例如:错误的MAC或者解密失败
    c.notification(通告) 例如:会话终止
    C.Change Cipher Spec Protocol (修改密钥说明) 协议,用于在后续记录中通告密钥策略转换。
  3. Application Data Protocol
    运用程序数据协议处理上层运用程序数据的传输。

HTTP认证

HTTP使用的认证方式

  • BASIC认证(基本认证)
  • DIGEST认证(摘要认证)
  • SSL客户端认证
  • FormBase认证(基于表单认证)
    此外,还有Windows统一认证(Keberos认证、NTLM认证)

BASIC认证

从HTTP/1.0就定义的认证方式。即便是现在仍有一部分的网站会使用这种认证方式。是Web服务器与通信客户端之间进行的认证方式。

DIGEST认证

为弥补BASIC认证存在的弱点,从HTTP/1.1起就有了DIGEST认证,DIGEST认证同样使用质询/响应的方式(challenge/response),但不会像BASIC认证那样直接发送明文密码。
所谓质询响应方式是指,一开始一方会先发送认证要求给另一方,接着使用从另一方那接收到的质询码计算生成响应码。最后将响应码返回给对方进行认证的方式。

SSL客户端认证

是借由HTTPS的客户端证书完成认证的方式。凭借客户端证书认证,服务器可确认访问是否来自己登录的客户端。

基于表单认证(最主流的方式)

基于表单的认证方法并不是在HTTP协议中定义的。客户端会向服务器上的Web应用程序发送登录信息(Credential),按登录信息的验证结果认证。
根据Web应用程序的实际安装,提供的用户界面及认证方式也各不相同。
淘宝,京东的登陆等基本上是表单认证。

WEB认证主要采用表单认证

由于使用上的便利性及安全性问题,HTTP协议标准提供的BASIC认证和DIGEST认证几乎不怎么使用。另外,SSL客户端认证虽然具有高度的安全等级,但因为导入及维持费用等问题,还尚未普及。
比如SSH和FTP协议,服务器和客户端之间的认证是符合标准规范的,并且满足了最基本的功能需求上的安全使用级别,因此这些协议的认证可以拿来直接使用。但是对于Web网站的认证功能,能够满足其安全使用级别的标准规范并不存在,所以只好使用由Web应用程序各自实现基于表单的认证方式。

Session管理及Cookie应用

基于表单认证的标准规范尚未有定论,一般使用Cookie来管理Session(会话)。
基于表单认证本身是通过服务器端的Web应用,将客户端发送过来的用户ID和密码与之前登录过的信息做匹配来进行认证的。
但鉴于HTTP是无状态协议,之前已认证成功的用户状态无法通过协议层保存下来。即,无法实现状态管理,因此即使当该用户下一次继续访问,也无法区分他与其他的用户。于是我们会使用Cookie来管理Session,以弥补HTTP协议中不存在的状态管理功能。

CGI

Common Gateway Interface,通用网关接口,是指Web服务器在接收到客户端发过来的请求后转发给程序的一组机制。在CGI的作用下,程序会对请求内容做出相应的动作,比如创建HTML等动态内容。
使用CGI的程序叫做CGI程序,通常是由Perl、PHP、Python、Ruby和C等编程语言编写而成。

原创文章 42 获赞 38 访问量 8768

猜你喜欢

转载自blog.csdn.net/weixin_44350891/article/details/105295391
今日推荐