SSL/TLS介绍

本文介绍了SSL/TLS协议的基础知识,包括其工作原理、作用及HTTPS的应用,并探讨了单向和双向TLS认证的具体流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要介绍SSL(Secure Sockets Layer)/TLS(Transport Layer Security)的相关知识。

1 概述

SSL及其继任者TLS是为网络通信提供安全及数据完整性的一种安全协议

SSL由Netscape研发,用以保障在Internet上安全地进行数据传输,利用数据加密“Encryption”技术,可确保数据在网络传输过程中不会被截取或窃听。SSL的当前版本为3.0,它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输场景中。

TLS用于在两个通信应用程序之间提供保密性和数据完整性。

SSL与TLS都是在传输层对网络连接进行加密的。

2 作用

SSL/TLS的主要作用如下:

  1. 认证用户和服务器,确保数据被发送到正确的客户端和服务器上;
  2. 加密数据以防止数据传输过程中被窃取;
  3. 维护数据的完整性,确保数据在传输过程中不被篡改。

3 SSL的工作过程

3.1 发送方的工作过程

消息发送方的工作过程如下:

  1. 从上层接收要发送的数据(包括各种消息和数据);
  2. 对接收到的数据进行分段,分成若干纪录;
  3. 使用指定的压缩算法进行数据压缩(可选);
  4. 使用指定的MAC(消息验证码,Message Authentication Code)算法生成MAC;
  5. 使用指定的加密算法进行数据加密
  6. 添加SSL记录协议的头,发送数据。

3.2 接收方的工作过程

消息接收方的工作过程如下:

  1. 接收数据,从SSL记录协议的头中获取相关信息;
  2. 使用指定的解密算法解密数据
  3. 使用指定的MAC算法校验MAC;
  4. 使用压缩算法对数据解压缩(在需要时进行);
  5. 将若干记录进行数据重组;
  6. 将重组后的数据发送给上层。

说明:SSL记录协议处理的最后一个步骤是附加一个SSL记录协议的头,以便构成一个SSL记录。SSL记录协议头中包含了SSL记录协议的若干控制信息。

4 SSL的会话状态

会话(Session)连接(Connection)是SSL中两个重要的概念,两者定义如下:

  • SSL会话:是指客户端和服务器之间的一个关联关系。SSL会话通过握手协议来创建。它定义了一组安全参数;
  • SSL连接:用于提供某种类型的服务数据的传输,SSL连接是一种点对点的关系。一般来说,连接的维持时间比较短,并且每个连接一定与某一个会话相关联。

一次会话过程通常会发起多个SSL连接来完成任务,例如一次网站访问可能需要多个HTTP/SSL/TCP连接来下载其中的多个页面,这些连接共享会话定义的安全参数,这种共享方式可以避免为每个SSL连接单独进行安全参数的协商,而只需在会话建立时进行一次协商,从而提高了网络通信的效率。

每一个会话(或连接)都存在一组与之相对应的状态,会话(或连接)的状态表现为一组与其相关的参数集合,最主要的内容是与会话(或连接)相关的安全参数的集合,这些参数用于会话(或连接)中的加密解密、认证等安全功能的实现。

5 HTTPS介绍

HTTPS(HTTP over SSL,HTTP Secure)是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份验证保证了传输过程的安全性。

HTTPS由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回由网络传送的结果。HTTPS实际上应用了Netscape的SSL作为HTTP应用层的子层。HTTPS使用端口“443”,而不是像HTTP那样使用端口“80”来进行TCP/IP通信。

HTTPS在HTTP的基础上加入了SSL,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

6 单向/双向TLS认证

6.1 单向TLS认证

首先介绍单向TLS认证,即通信的一方验证另一方的身份。

单向TLS认证的一个常见应用场景是:我们通过浏览器访问银行的网页。在这个场景中,我们需要先验证银行的身份(是否正确),(确保身份正确的情况下)然后才敢在这个银行的网页里输入银行账号和密码。

浏览器验证银行的身份的过程如下:

  1. 在浏览器和银行的HTTPS服务建立安全连接的过程中,银行的HTTPS服务会把它的身份证(身份信息)发给浏览器;
  2. 浏览器使用内置的CA(Certificate Authority,即证书颁发机构)身份证来验证银行的身份。

当浏览器验证了银行的HTTPS服务的身份之后,银行也会验证浏览器(用户)的身份,过程如下:

  1. 浏览器展示银行HTTPS服务发来的登录页面;
  2. 用户在这个页面里输入银行账号和密码,银行的HTTPS服务根据用户输入的信息验证用户的身份。

在上面的两种认证过程中:浏览器对于银行身份的认证过程属于TLS单向认证;而在银行验证用户身份的过程中,银行是通过用户输入的银行账号和密码来验证(用户的身份)的。

6.2 双向TLS认证

有些情况下,通信的双方都是程序(而不是用户),此时,如果让通信的一方输入账号和密码来进行身份认证(如6.1节介绍的那样)的话,在设计和实现上会比较复杂。这种情况下,通常会让双方都通过TLS认证来进行身份认证,尤其是在分布式系统里,有多种类型的程序互相通信时,双向TLS认证会更加简单便捷。

比如在Kubernetes机群里,操作机群的客户端程序kubectl需要验证“Kubernetes master node”(具体的说是“apiserver”)的身份,而后才能放心地把包括敏感信息(比如数据库密码)的计算作业提交给“apiserver”。同时,“apiserver”也需要验证“kubectl”的身份,以确认提交作业的是公司的合法雇员,而不是外贼。

所以,为了实现双向TLS认证,系统中的通信各方都需要有各自的身份证。一个公司可以自签名一个CA身份证,并且用它来给每个雇员以及每个程序签署身份证。这样,只要每台电脑上都预先安装好公司的CA身份证,就可以用这个身份证验证每个雇员和程序的身份了——这也是目前很多公司的常用做法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liitdar

赠人玫瑰,手有余香,君与吾共勉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值