百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

HTTP、HTTPS、SSL/TLS概述

nanshan 2024-11-18 15:15 15 浏览 0 评论


概念

HTTP

解释: Hypertext Transfer Protocal, 超文本传输协议,属于TCP/IP第五层、OSI第七层协议栈。是B/S架构应用体系中应用最广的协议。
用法:在要访问的URL或URI前,加http://即可。
优点:规则统一,便于使用,消耗较小。
缺点:明文传输,很容易被中间人拦截(窃听、篡改、冒充),不安全。
默认端口:80

HTTPS

解释:Secure HTTP,即HTTP + 安全套件(SSL、TLS、Cert等)
用法:需要在访问的URL或URI前,加https://即可。(前提是该网站已加过安全套件)
优点:规则统一,便于使用,且由于对信息加密,安全性较高。
缺点:消耗较大,需要管理安全套件
默认端口:443

SSL/TLS

解释:SSL(Secure Sockets Layer), TLS(Transport Layer Security), 均为安全套件, TLS用于替代SSL。
作用:
所有信息加密传播,第三方无法窃听
完整性校验机制,因此无法篡改传输内容
对身份进行验证,防止冒充
优点:安全
缺点:消耗大,需要维护
最常用:TLS1.1 TLS1.2

具体过程

HTTP(基于TCP连接)

1.1 建立连接的三次握手


第一次握手:客户端发SYNbit包,指明客户端要访问的端口;并发出初始序列号X;然后客户端进入SYN_SENT状态。

? 第二次握手:服务器发ACK包应答,即SYNbit和ACKbit均为1;ACK应答设置为x+1;Seq为y ;然后服务器进入SYN_RCVD状态。

? 第三次握手:客户端发ACK包确认收到,故ACKbit为1,ACKnum为y+1,进入Establish状态;服务器收到这个包后,也进入Establish状态,TCP连接建立。

1.2 断开连接的四次挥手


第一次挥手:客户端发送离线请求,即FINbit=1;表明自己不会主动发数据了,但是可以收数据;然后客户端进入FIN_WAIT_1状态。
? 第二次挥手:服务器收到此请求并回复,即ACKbit=1,ACKnum=x+1;表明自己已接收断开连接的请求,但是尚未准备好关闭连接;然后服务器进入CLOSE_WAIT状态。客户端收到此确认包之后,进入FIN_WAIT_2状态。
? 第三次握手:服务器做好关闭连接的准备,并发送断开连接的请求,故ACKbit=1, seq=y;然后服务器进入LAST_ACK状态。
? 第四次握手:客户端收到此请求后发送确认包,进入TIMED_WAIT状态;服务器收到断开连接的确认包后,断开连接,并进入CLOSED阶段。客户端在2个最大生命周期内未收到回复时,会断开与服务器的连接,并将状态置于CLOSED。

HTTPS(基于TLS)

由于HTTPS是基于HTTP的,只是加了一步认证的过程。所以此处只讲加密这一部分。

对于HTTPS的加密,TLS使用的是公私钥+证书的方式。

具体的图示如下:


第一次握手:客户端向服务器发送ClientHello请求。
? 可提供以下信息:
? 1) 支持的协议版本,例如TLS1.0
? 2) 一个客户端生成的随机数,稍后用于生成"对话密钥"。
? 3) 支持的加密方法,比如RSA公钥加密。
? 4) 支持的压缩方法。

? 第二次握手:服务器回应客户端的请求。
? 可提供以下信息:
? 1) 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
? 2) 一个服务器生成的随机数,稍后用于生成"对话密钥"。
? 3) 确认使用的加密方法,比如RSA公钥加密(包含在服务器证书里)。
? 4) 服务器证书。

? 第三次握手:客户端回应。如果证书有问题(不是可信任机构颁发、实际域名不一致、证书过期等),就会报出一个警告来;如果证书没问题,就会提供以下信息给服务器:
? 1) 一个随机数。该随机数用服务器公钥加密,防止被窃听。
? 2) 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
? 3) 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。

? 上面三次握手有三个随机数,可用来生成本次连接的会话密钥。

? 第四次握手:服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的"会话密钥"。
? 1) 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
? 2) 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。

至此,TLS的加密完成。之后的通讯采用HTTP方式进行,只不过明文都需要被加密。

相关推荐

0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)

文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...

ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes

为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...

生产环境starrocks 3.1存算一体集群部署

集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...

在CentOS上添加swap虚拟内存并设置优先级

现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...

国产深度(deepin)操作系统优化指南

1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...

postgresql-15.4 多节点主从(读写分离)

1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...

Docker 容器 Java 服务内存与 GC 优化实施方案

一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...

虚拟内存设置、解决linux内存不够问题

虚拟内存设置(解决linux内存不够情况)背景介绍  Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...

Elasticsearch性能调优(5):服务器配置选择

在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...

Es如何落地

一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...

针对Linux内存管理知识学习总结

现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...

MySQL进阶之性能优化

概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...

Linux Cgroups(Control Groups)原理

LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...

linux 常用性能优化参数及理解

1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...

如何在 Linux 中使用 Sysctl 命令?

sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...

取消回复欢迎 发表评论: