https单向认证与双向认证

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: https的单向认证与双向认证流程介绍。

HTTPS在HTTP的基础上加入了SSL协议,对信息、数据加密,用来保证数据传输的安全。

单向认证的过程,客户端从服务器端下载服务器端公钥证书进行验证,然后建立安全通信通道。

双向通信流程,客户端除了需要从服务器端下载服务器的公钥证书进行验证外,还需要把客户端的公钥证书上传到服务器端给服务器端进行验证,等双方都认证通过了,才开始建立安全通信通道进行数据传输。

SSL 和 TLS

SSL 表示 Secure Sockets Layer(安全套接字层)。
TLS 表示 Transport Layer Security(传输层安全)。

TLS 是 SSL 的直接后继者,所有版本的 SSL 目前均已弃用。
但是,使用术语 SSL 来描述 TLS 连接的情况很常见。
在大多数情况下,术语 SSL 和 SSL/TLS 都是指 TLS 协议和 TLS 证书。

TLS 1.0 和 TLS 1.1 也在 2021 年被正式弃用。
TLS 版本 1.2 和 1.3(目前最新版本) 处于活跃使用状态。

TLS 是一种支持加密和身份验证的安全通信协议,SSL 在被弃用之前也是如此。TLS 和 SSL 都使用数字证书来简化握手过程并在浏览器和 Web 服务器之间建立加密通信。

单向认证流程

单向认证中,只需要服务端保存公钥 server.crt 和 私钥 server.key 两个文件。

  1. client 发起https请求,将ssl版本信息等发给server
  2. server 将公钥证书server.crt发给 client
  3. client 验证证书合法性(专门的CA机构或者自签名证书),取出server公钥
  4. client 向server发送客户端支持的对称加密方案
  5. server 选择一种双方都能接受的加密方案,通过明文方式返回给客户端
  6. client 接收到server确认的加密方案之后,生成随机数R,使用server公钥加密 C = Encrypt(R),将C发送给server
  7. server 用自己的私钥server.key对C进行解密,得到密钥R
  8. server 和 client 在后续通信过程中用这个密钥R进行对称加密通信

双向认证 MutualTLS Authentication

双向认证中,除了server.crt, server.key,还需要 root.crt保存在server端,client.crt,client.key 保存在客户端。
或者使用 客户端集成证书(包括公钥和私钥,用于浏览器访问场景):client.p12

  1. client 发起https请求,将ssl版本信息等发给server
  2. server 将公钥证书server.crt发给 client
  3. client 验证证书合法性(专门的CA机构或者自签名证书),取出server公钥

3.1 client 将自己的公钥证书 client.crt发给server
3.2 server 使用根证书root.crt 解密client.crt,取出client公钥

  1. client 向server发送客户端支持的对称加密方案
  2. server 选择一种双方都能接受的加密方案,使用client公钥加密后返回给客户端
  3. client 接收到server确认的加密方案之后,使用client私钥解密,生成随机数R,使用server公钥加密 C = Encrypt(R),将C发送给server
  4. server 用自己的私钥server.key对C进行解密,得到密钥R
  5. server 和 client 在后续通信过程中用这个密钥R进行对称加密通信
目录
相关文章
|
7月前
|
运维 安全 Linux
CA认证与HTTPs原理介绍
CA认证与HTTPs原理介绍
208 2
|
7月前
|
存储 缓存 安全
https跳过SSL认证时是不是就是不加密的,相当于http?
https跳过SSL认证时是不是就是不加密的,相当于http?
396 0
|
7月前
|
JSON 安全 网络安全
超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
1138 0
|
算法 安全 网络安全
【厨房测试系列】第一章 手撸压力机(四)- http证书认证的实现
我们知道通常https接口是通过ssl/tsl进行加密的,有时候我们的请求https接口需要进行验证,需要在客户端发送请求时,带上密钥对通过摘要算法计算出的摘要及明文进行加密,而服务端则通过密钥进行解密。
|
7月前
|
算法 安全 Java
Java【算法 04】HTTP的认证方式之DIGEST认证详细流程说明及举例
Java【算法 04】HTTP的认证方式之DIGEST认证详细流程说明及举例
672 0
|
Java 应用服务中间件 网络安全
企业级Nginx实战-配置Https单向认证、双向认证
企业级Nginx实战-配置Https单向认证、双向认证
551 0
企业级Nginx实战-配置Https单向认证、双向认证
|
安全 网络安全 数据安全/隐私保护
https跳过SSL认证时是不是就是不加密的,相当于http?
https跳过SSL认证时是不是就是不加密的,相当于http?
358 0
|
3月前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
26天前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
53 11
|
26天前
|
缓存 安全 网络协议
HTTPS协议的历史发展
HTTPS协议的历史发展
36 8