SSL单双向认证

2023-11-12

一、TLS/SSL协议

  1. HTTPS协议是在HTTP+TLS/SSL协议组成的可进行加密传输、身份认证的网络协议,旨在保证数据传输过程中的保密性、完整性和安全性。
  2. HTTPS在HTTP和TCP之间,增加了TLS/SSL协议

在这里插入图片描述

  1. 正是通过TLS协议,才能保证HTTP通信是安全的。
  2. TLS主要通过信息加密、校验机制和身份证书来保证数据安全,其中信息加密是保证HTTP交互信息是被加密的,第三方无法知晓真实信息;校验机制是来校验信息在传输过程中是否被篡改;身份证书是用来确认这个网址的身份的。
  3. TLS会进行四次握手,是在TCP连接建立三次握手之后进行。因为HTTPS都是基于TCP传输协议实现的,得先建立完可靠的TCP连接才能继续TLS握手。

二、SSL单向认证

SSL协议用到了对称加密和非对称加密,在建立连接时,SSL首先对对称加密密钥使用非对称加密。连接建立好后,SSL对传输内容使用对称加密。单向认证是客户端不携带证书,服务端存在证书,在认证过程中,仅验证服务端的身份,当客户端访问服务器时,浏览器会去检查服务器的SSL证书,来验证网站服务器的合法性。一般web端应用都是采用单向认证的。

单向认证过程

  1. 客户端向服务端发送SSL协议的版本号、加密算法种类、随机数等信息,建立连接;

  2. 服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,以及服务端证书(证书中有公钥);

  3. 客户端用返回的信息,进行对服务端的校验,验证通过则继续通信,否则告警,验证内容:

    • 证书是否过期
    • 服务器证书签发的CA机构是否可靠
    • 公钥是否能解开证书中的数字签名
    • 服务器证书上的域名是否和服务器实际域名相匹配
  4. 客户端向服务器发送自己所能支持的对称加密方案,供服务器进行选择;

  5. 服务器选择加密程度高的加密方式;

  6. 服务器将选择好的加密方式以明文方式返回给客户端;

  7. 客户端收到加密方案后,使用该加密方案生成随机码,用作通信过程中对称加密的密钥,使用服务端返回的公钥进行加密,将加密后的随机码发送给服务器;

  8. 服务端收到客户端返回的加密信息后,使用自己的私钥解密,获取对称加密密钥,接下来的会话中,服务器和客户端将会使用该密码进行对称加密,保证通信的信息安全。

三、双向认证

双向认证是指在SSL握手的过程中,同时验证客户端和服务器的身份,所以双向认证SSL证书至少包括两个或两个以上的证书,一个是服务器证书,另一个或多个是客户端证书。

双向认证过程

  1. 客户端向服务器发送SSL协议的版本号、加密算法种类、随机数等信息,建立连接;
  2. 服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,以及服务端证书(证书中有公钥);
  3. 客户端使用服务端返回的信息验证服务器的合法性,验证内容跟单向认证一样;
  4. 客户端校验通过后,将自己的证书及公钥发送到服务器;
  5. 服务器验证客户端的证书,校验通过后,可获取到客户端的公钥;
  6. 客户端发送自己的可支持的对称加密方案给服务器供其选择;
  7. 服务器端在客户端发送的加密方案中先择加密程度高的方案,将加密方式通过客户端发送证书中的公钥加密后,返回给客户端;
  8. 客户端收到服务端返回的加密方案密文后,用私钥解密,获取加密方案的明文,产生随机码,作为对称加密密钥,使用服务端公钥加密后,发送给服务端;
  9. 服务端使用私钥解密得到对称加密的密钥,接下来的会话中,服务器和客户端将使用该密钥进行对称加密,保证通信安全。

四、SSL单向和双向认证区别

SSL单向认证只要求服务端部署了SSL证书,任何用户都可访问,仅服务器提供身份认证。SSL双向认证则是服务端和客户端均部署证书,进行身份认证,只能是服务端允许的客户去访问,安全性相对高。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSL单双向认证 的相关文章

  • Python SSL X509:KEY_VALUES_MISMATCH

    Python HTTPS server from http server import HTTPServer SimpleHTTPRequestHandler import ssl https stackoverflow com a 408
  • 应用程序网关中的 SSL 证书到期日期

    我们有一个带有 SSL 证书的 Azure 应用程序网关 我们知道我们的证书即将过期 我们需要更新它 我们的问题是 我们无法获取网关信息中的实际到期日期 至少无法从门户获取 有人知道我们可以在哪里检索此信息吗 可能没有直接从 Azure 门
  • HAProxy SSL终止+客户端证书验证+curl/java客户端

    我希望使用我自己的自签名证书在 HAProxy 上进行 SSL 终止 并使用我创建的客户端证书验证客户端访问 我通过以下方式创建服务器 也是 CA 证书 openssl genrsa out ca key 1024 openssl req
  • 使用 Java https 上传到 Imgur v3 错误

    我目前正在尝试使用他们当前的 API v3 上传到 imgur 但是我不断收到错误 错误 javax net ssl SSLException 证书中的主机名不匹配 api imgur com imgur com OR imgur com
  • 使用.pem文件在java中发送https请求

    我有包含证书 私钥和信任链的 pem 文件 以及我使用它生成的 p12 文件openssl pkcs12 导出 openssl pkcs12 export out file p12 in file pem inkey file pem pa
  • 使用 AAACertificateServices 证书的域示例

    如何找到根证书为的域AAA证书服务 https support sectigo com Com KnowledgeDetailPage Id kA03l00000117cL 请注意 这是 Comodo 证书 为了准备一个其证书即将更改的依赖
  • 如何使用 Postgres 数据库 URL 字符串传递证书路径以进行 SSL 连接

    我正在尝试通过 SSL 为我的 Spring 启动应用程序保护与 AWS RDS 实例的连接 我看了几个博客和官方文档 https jdbc postgresql org documentation head ssl client html
  • Android WebView setCertificate 问题 SSL 问题

    我看过很多关于 SSL 错误的帖子和信息 并且我自己也偶然发现了一个 我尝试使用 GlobalSign CA BE 证书通过 Android WebView 访问网页 但收到不受信任的错误 对于大多数手机来说 处理这个问题效果很好 只需告诉
  • Android 版 Qt 和 BoringSSL

    我正在开发一个基于 Qt 的 Android 应用程序 它使用 QSslSocket 下载数据 由于 Android 从 OpenSSL 转向 BoringSSL 因为依赖 OpenSSL 库的 Marshmallow Qt 程序在 And
  • 在 python 2.7 中更新 openssl

    想知道是否有人可以解释 openssl 在 python2 7 中如何工作 我不确定 python 是否有自己的 openssl 或者从本地机器 env 中获取它 让我解释 如果我在Python中这样做 gt gt gt import ss
  • 有什么简单的方法可以完全忽略带有 java url 连接的 ssl ?

    我正在构建一个应用程序 定期检查一些 RSS 提要是否有新内容 其中一些提要只能通过 https 访问 有些具有自签名或以某种方式损坏的证书 我仍然希望能够检查它们 请注意 安全性在此应用程序中不是问题 目标是以最小的努力访问内容 我使用此
  • 如何解决错误:消息:fsockopen():无法连接到 ssl://smtp.gmail.com:465(连接被拒绝)

    我在用着代码点火器我创建了一个电子邮件功能来将电子邮件发送到特定的电子邮件 ID public function email email config protocol smtp config smtp host ssl smtp gmai
  • 带有客户端证书的android webview

    我尝试了几天使用嵌入在应用程序中的客户端证书的Web视图 但在我看来 android sdk没有提供任何方法来做到这一点 是否有回调来拦截服务器发送的质询 有没有办法将 webview 与客户端证书一起使用并发出 https 请求 因为我也
  • 使用 https 的 Web 服务身份验证给出错误

    我编写了一个简单的 Web 服务 并使用摘要和 HTTPS 身份验证来保护它 我已经使用 Java 中的 keytool 生成了我的证书 当我通过创建 war 文件在 Tomcat 中部署 Web 服务时 axis 的欢迎页面正确显示 但是
  • 快速修复:如何在 Python 中使用 SSL

    对不起我的英语不好 我在连接用 python 开发的客户端 quckfix 时遇到问题 配置文件没有像我想要的那样响应 如果我将路径 不正确的路径 强制错误 更改为文件 pem 并重新启动应用程序 该应用程序什么也不做 只是保持正常运行 就
  • 将证书安装到 Azure Web 应用上的受信任根证书存储

    如何将证书安装到 Azure Web 应用程序中 以便我的 azure web 应用程序可以通过 SSL 与远程服务通信 此特定证书未由公共 CA 签名 我使用 openssl 生成了一个 ssl 证书 当我将其安装到本地计算机上受信任的根
  • Swift 客户端和根 SSL 证书身份验证

    积分得到token api of QLIK server with ssl证书 但执行任务后我收到这样的错误 完成时出现错误 代码 999 Your hostname and endpoint let hostname YOUR HOST
  • 使用请求验证 SSL 证书

    我正在尝试验证 SSL 但它不起作用 我在浏览器上访问了我想要访问的机密网站 在 Chrome 上 我单击了储物柜 gt 证书 gt 详细信息 gt 复制到文件 gt base64 gt cert cer 我的代码是 test reques
  • 如何使用自签名证书为 TLS 创建 iOS NWConnection?

    我正在尝试将 Apple 的新 NWConnection 类用于我的 MQTT 客户端 为了进行测试 我需要能够创建到本地测试代理的 TLS 连接 该代理具有自签名证书 到目前为止 我只是使用以下命令设置连接 self connection
  • 仅在 Tomcat Web 应用程序上为表单登录设置 SSL

    我是否可以将 Tomcat 或我的 web 应用程序 如果这样做 设置为需要 SSL 来保证内置基于表单的登录机制的机密性 即保护用户凭据 并使用标准 http 进行任何其他交易 您可以将登录表单放在自己的目录中 并且只需对该目录要求 SS

随机推荐

  • Converting Phase Noise to Random Jitter(TIE)

    该篇介绍了相位噪声 Phase Noise 和帕塞瓦尔定理 Parseval s theorem 推导了Phase Noise to Time Jitter rms 的转换过程 以及用ADI芯片demo的Phase Noise估算Jitte
  • OSI七层与TCP\IP协议

    本文为个人记录 记录于2022 10 31 目录 一 什么是OSI七层模型 二 什么是TCP IP协议 1 TCP IP常用协议 2 数据封装和解封装过程 分层思想 为什么要分层 将复杂的流程分解为几个功能相对单一的子过程 整个流程更加清晰
  • postgresql怎样查看数据库是否处于主从结构

    执行以下命令 ps aux grep postgres 如出现postgres wal receiver process说明此节点的数据库处于从服务器状态 无法进行修改
  • 2020——奇安信技术支持笔试题摘要

    1 常见应用层协议端口号 TCP和UDP使用IP协议从一个网络传送数据包到另一个网络 把IP想像成一种高速公路 它允许其它协议在上面行驶并找到到其它电脑的出口 TCP和UDP是高速公路上的 卡车 它们携带的货物就是像HTTP 文件传输协议F
  • 超级好用的一些网站

    免费在线工具网站 功能 地址 免费在线音频编辑 https mp3cut net cn 免费pdf翻译 https www deepl com translator files 免费pdf转word pdf转word 免费音乐下载 http
  • 制作基于XKT-510和T3168芯片的无线供电模块

    制作基于XKT 510和T3168芯片的无线供电模块 制作无线供电模块 进展记录更新 简书上更新比较快 链接 2017年9月6日 19 27 56 还是简书的Markdown编辑器好用啊可以直接粘贴图片不用一张张上传所以先发布在这了再搬到c
  • vscode 画流程图

    文章目录 1 安装插件 draw 2 新建文件 3 开始画图 4 另存为图片 vscode可以画流程图了 只需要安装插件就可以了 1 安装插件 draw 2 新建文件 3 开始画图 4 另存为图片
  • js声明函数(function)和变量(variable)不得不防的坑

    在工作中初级程序员容易忽略的细节就是函数和变量的声明都存在提升 而且他们之间的提升是不同的 请看下面的演示 function funa console log funa 函数声明 function funb console log funb
  • ChatGPT + MindShow搞定PPT制作

    一 获取PPT内容大概 1 进入chatgpt 官网 http chat openai com 账号密码登录 2 获取PPT内容 向他提问 提问格式如下 整理一份PPT大纲 主题是 如何使用热门AI工具 回答内容采用Markdown的形式
  • 【简单又有趣】Python五个迷你小项目,即学即用,还不赶紧码住(附源码)

    目录 前言 一 猜数字游戏 二 骰子模拟器 三 故事生成器 四 自动发送邮件 五 Hangman 总结 前言 Python编程语言中 我最喜欢的就是Python的各种第三方库 能够完成很多操作 下面就给大家介绍5个通过Python构建的项目
  • 2013年11月26日星期二(四元数)

    这一节 应该是个一点点进行 QUAT q1 0 0 0 0 先看下QUAT数据类型 四元数 typedef struct QUAT TYP union float M 4 struct float q0 VECTOR3D qv struct
  • 若依前后端分离代码生成

    去代码生成器界面 点击导入按钮 选择你想生成的数据库表 选择好之后 生成 会下载一个文件夹 包括SQL 前端代码和后端代码 只需要放到相应文件夹下面就可以了 vue是前端代码 放到ruoyi ui文件中 main是后端代码 那些mapper
  • vue.js鼠标移入变换样式,鼠标移出去除样式(active)实现方法

    鼠标移入添加class样式 HTML HTML绑定事件 加入或者移出class为active span class things 报事 span span class things 报修 span 注意这里v on不能直接省略为 我也不知道
  • Javascript数组与字典用法分析

    http www 68idc cn help makewebs javascript 20141214142024 html 这篇文章主要介绍了Javascript数组与字典用法 以实例形式较为详细的分析了Array作为数组与字典的不同用法
  • Chrome 扩展程序开发

    按chrome开发规范 我们首先建一个文件夹 如D AutoClickDemo 在该文件夹下新建一个名为manifest json的文本文件 并按实际情况放一个图片文件 作为插件的图标 然后新建一个名为myscript js的js脚本文件
  • SQL查询一个表中根据其中一个列的属性来拼接多个列并SELECT INTO 新表显示

    将同一个表中 不同 Group 属性的添加列分成一整行 SELECT INTO VP Temp FROM SELECT DISTINCT A ID A TypeName A ItemType A isBad A sNo sNo1 A Che
  • C++ 类的静态成员详细讲解

    在C 中 静态成员是属于整个类的而不是某个对象 静态成员变量只存储一份供所有对象共用 所以在所有对象中都可以共享它 使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则 保证了安全性还可以节省内存 静态成员的定义或声明要加个关键st
  • C++控制台输入

    我们在刷牛客网的题目时 经常遇到多组输入 执行到文件结束 下面介绍几种写法 1 C语言的输入多个整数 while scanf d n EOF 为End Of File的缩写 通常在文本的最后存在此字符表示资料结束 code 2 C 输入字符
  • PyQt实现图形化界面的视频播放

    PyQt实现图形化界面的视频播放 PyQt是一款流行的Python GUI库 它可以与Python的许多其他工具和库结合使用 OpenCV是一个功能强大的计算机视觉库 可以处理图像和视频 本文将介绍如何结合使用PyQt和OpenCV来创建一
  • SSL单双向认证

    一 TLS SSL协议 HTTPS协议是在HTTP TLS SSL协议组成的可进行加密传输 身份认证的网络协议 旨在保证数据传输过程中的保密性 完整性和安全性 HTTPS在HTTP和TCP之间 增加了TLS SSL协议 正是通过TLS协议