https基础知识大致介绍

一.什么是HTTPS协议?

HTTPS协议又称为超文本传输协议,也成HTTP over TLS, HTTP over SSL或者HTTP Secure,通过计算机网络进行安全通信传输协议,也被成为是HTTP协议的安全版本

1.HTTPS 由两部分构成:

  • HTTP协议负责通信和传输
  • 安全传输协议保证安全

默认端口:443
职责:提供网站服务器的安全认证;保护交换数据的隐私性和安全性。

二.HTTPS协议和HTTP协议

1.相同点

  • 同属于TCP/IP协议族的应用协议
    具有TCP协议面向连接,可靠传输,流量控制等特点。
  • 协议是无状态的
    需要通过COOKIE和SESSION等会话机制来保存状态
  • 请求与响应内容的格式相同
  • 广泛应用于互联网上的数据传输
    支持B/S与C/S架构的应用

2.不同点

  • 协议头和默认端口不同
    HTTPS :443
    HTTP :80
  • HTTP协议需要使用安全证书
    安全证书由证书颁发结构(CA)签发
  • 协议栈不同
    HTTP : IP ->TCP->HTTP
    HTTPS:IP->TCP->SSL/TLS->HTTPS
    HTTPS协议栈多了安全传输协议层
  • 资源消耗不同
    HTTPS消耗更多的资源
  • 内容传输方式不同
    HTTPS 加密传输
    HTTP 明文传输
  • 应用场景不同
    HTTPS 普通 + 特殊 (安全,秘密)
    HTTP 普通

3.HTTPS的优劣势

3.1优势
  • 数据完整性
    内容传输经过完整性校验
  • 数据私密性
    内容经过对称加密,加解密秘钥具有唯一性
  • 身份认证
    第三方无法伪造服务端/客户端身份
  • 实用性强
    提供安全,隐私的信息传输,应用场景丰富
3.2劣势
  • 成本提高
    增加了证书购置成本,提高应用配置部署成本
  • 性能损耗
    增加时延,消耗更多系统资源

三.传输层安全协议

位于可靠的面向连接的运输层协议(TCP)和应用层协议(HTTP)之间。独立于应用协议,高层协议可以透明地分布在传输安全协议之上。

1.如何做到安全通信

  • (1)互相认证确保不可冒充性。
  • (2)数字签名保证信息完整性。
  • (3)通过加密确保私密性.

两种传输层安全协议

SSL (Secure Sockets Layer) 安全套接层
TLS (Transport Layer Security)传输层安全协议

SSL安全套接层

https基础知识大致介绍_第1张图片

  • SSL记录协议(SSL Record Protocol)
    建立在可靠的传输协议(如TCP)之上,为高层协议(如HTTP)提供数据封装,加/解密,(解)压缩,签名及完整性校验等基本功能。
  • SSL握手协议
    建立在SSL记录协议之上,用于在实际的数据传输开始之前,通讯双方进行身份验证,协商加密算法,交换加密密匙等。
TCP传输层协议

https基础知识大致介绍_第2张图片

  • TLS记录协议(TLS Record Protocol)
    建立在可靠的传输协议(如TCP)之上,对数据进行加/解密,(解)压缩签名,封装及完整性校验等操作。
  • TLS握手协议(TLS Handshake Protocol)
    建立在TLS记录协议之上,使用公共密匙及证书处理用户认证,并协商算法和加密实际数据传输的密匙。
TLS协议与SSL协议的比较
  1. TLS协议是基于SSL协议发展而来,从技术上讲,TLS1.0和SSL3.0差异非常小。
  2. TLS协议使用了更安全的HMAC算法,更强大的伪随机功能,更严密的警告信息。
  3. TLS协议比SSL协议更加复杂和安全,协议的规范更精确和完善。
TLS会话缓存机制

https基础知识大致介绍_第3张图片
为了节省网络资源,提高HTTPS协议的工作效率,TLS协议中有两类会话控制机制:

  • 会话标识:Session ID 类似于Session
  • 会话记录:Session Ticket类似于cookie
    Session ID缓存机制
  • 在服务器保存每次会话的ID和协商内容的通信信息。
  • 基本所有的服务器都支持
  • 占用服务器资源多
    Session Ticket缓存机制
  • 将协商的通信加密之后发送给客户端保存,解密的密匙由服务器保存。
  • 服务器的支持范围有限
  • 占用服务器资源少
    会话缓存的优点
  • 简化了握手过程,提高了建立握手的速度
  • 减少了握手的信息传输,节省了带宽和流量
  • 减少了计算量,节省了客户端和服务器的资源
安全传输通道

特点

  1. 认证用户和服务器,确保数据发送到正确的客户机和服务器(握手协议层)
  2. 加密数据,以防止数据中途被窃取。(记录协议层)
  3. 维护数据的完整性,确保数据在传输过程中不被篡改。(记录协议层)

如何做到安全的?

  1. 利用数字证书对通信双方进行身份认证
    要求客户端/服务端提供有效的数字证书等信息结构进行认证,可以防止通信双方被冒充。
  2. 利用非对称加密方式,传输会话密匙
    保证了会话密匙的私密传输,从而保证了双方的通道安全。
  3. 利用对称加密方式传输通信内容
    只有通信双方才能利用会话密匙对通信内容进行解密,第三方无法获取。
  4. 利用MAC算法对传输内容进行签名和校验
    未通过校验的数据包将被丢弃,保证了通信内容的正确性和完整性。

四.四次握手

https基础知识大致介绍_第4张图片
工作流程如下:

第一次握手:客户端发起连接请求Client Hello

  1. 支持的安全传输协议------SSLv2,SSLv3,TLSv1,TLSv1.1,TLSv1.2
  2. 支持的加密算法------身份认证 + 密匙协商 + 信息加密 + 完整性校验
  3. 支持的压缩算法------用于后续密匙的生成
  4. 随机数C ------ 用于后续密匙的生成
  5. 扩展字段------协议或算法相关的辅助信息

第二次握手

  1. 服务器返回协商的结果Server Hello
    选择使用的安全协议,加密套件和压缩算法
  2. 服务器配置的证书链
  3. 根据选择加密套件的不同,可能还会有其他的内容
  4. 服务器发送的信息结束标志 Server Hello Done

客户端证书校验:客户端对服务器返回的证书进行校验

  1. 证书链是否可信------信任的CA和证书验证合法性
  2. 证书是否吊销
  3. 证书是否在有效期内
  4. 证书域名与网络域名是否匹配

第三次握手

  1. 客户端生成第三个随机数Pre-master,并用证书公钥加密发送给服务器Client Key Exchange
  2. 客户端将通过随机数C,随机数S和Pre-master计算出本次会哈的密匙Key=fuc(C,S,master)
  3. 客户端向服务器确认加密方式Change Cipher Spec
  4. 客户端计算前面所有信息的摘要并加密发送给服务器Encrypted Handshake Message

第四次握手

  1. 服务器先通过私匙解密Client Key Exchange的内容,获取Pre-master的值,并计算会话密匙key=fuc(C,S,Pre-master)
  2. 服务器解密客户端发送的加密握手信息并校验
  3. 服务器向客户端确认加密方式Change Cipher Spec
  4. 服务器计算当前所有信息的摘要指并加密发送给客户端Encrypted Handshake Message

握手完成 + 信息传输

  1. 客户端计算所有信息的摘要值并与服务器发送的加密握手信息做校验
  2. 检验通过则握手完成,无需向服务器发送任何信息
  3. 客户端可以与服务器按照约定版本,加密算法,会话密匙等进行信息通信了

双向认证

  1. 除了客户端验证服务器身份以外,服务器也可以要求验证客户端的身份,即双向认证
  2. 在第二次握手时,服务器向客户端发送Client Certificate Request信息,请求查看客户端证书
  3. 在第三次握手时,客户端会同时发送Client Certificate和Certificate Verify Message给服务器

四次握手中的加密算法

  1. 第三次握手中使用非对称加密算法 Pre-master
  2. 第三次和第四次握手使用MAC算法生成Encrypted Handshake Message
  3. 握手成功后使用对称加密算法加密通信数据

SSL证书

主要作用:身份认证,数据加密

分类

  1. 域名验证型(DV)
    1)只验证网站域名所有权
    2)仅能加密通信内容,不能向用户证明网站的真实身份
    3)适合无身份认证需求的网站,如larave_china等
  2. 组织验证型(OV)
    1)需验证域名所有权和所属单位的真实身份。
    2)不仅能加密通信内容,还能向用户证明网站的真实性
    3)适应电子商务,企业等网站使用,如亚马逊商城
  3. 扩展验证型(EV)
    1)严格的身份验证,最高安全级别
    2)提供通信内容加密与网站身份证明,浏览器状态显示单位名称。
    3)适合金融证券,银行等网站使用,比如工商银行

还有一种分类:单域名/多域名/通配型

如何获得

  1. 供应商处购买SSL证书

  2. 供应商处获取免费的SSL证书

  3. 自行签发SSL证书

    供应商
    国外:GoDaddy , Amazon , Web Service
    国内:沃通,腾讯云,阿里云

自签发SSL证书

使用工具:openSSL

  • step1:生成服务器私匙

    openssl genrsa -des3 -out server.key 4096
    
  • step2:去除服务器私匙的密码(可选)

    openssl rsa -in server.key -out server.key
    
  • step3:生成证书请求文件(CSR文件)

    openssl rsa -in server.key -out sener.csr
    
  • step4: 生成CA私匙

    openssl genrsa -ds3 -out ca.key 4096
    
  • step5:生成CA证书

    openssl req -new -key ca.key -out ca.crt -days 3652
    
  • step6:利用CA签名给CSR签名

    openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
    

HTTPS性能损耗

  1. 增加时延 RTT
    (Round-Trip Time)TCP数据包发送的往返时间
  2. 消耗更多系统资源
    对称加解密,非对称加密消耗额外的CPU计算资源,当HTTPS连接过多时,加解密操作的性能将首先成为瓶颈。

HTTPS性能优化

  1. CDN接入:作为HTTPS接入的入口,减少RTT的时间
  2. 会话缓存:使用会话缓存机制建立HTTPS连接只需要至少1*RTT的时延
  3. 硬件加速:为服务器安装专用的ssl硬件加速卡
  4. 远程加解密:将最消耗CPU资源的加解密任务转移到其他服务器
  5. HTTP2协议的应用

HTTPS测试工具

  1. 网络抓包工具:WireShark / TcpDump
  2. 网络调试工具: Fiddler / Postman
  3. SSL安全测试:SSL Labs网页测试链接
  4. 网站性能测试:Uptrends 网页测试链接,国外网站,有点慢

你可能感兴趣的:(网络协议,https,网络协议)