当前位置: 首页 > news >正文

OCSP原理及实践

1.OCSP介绍

  在PKI体系中,CA机构颁发合法的证书。使用者可以使用CA根证书验证该证书是否被篡改过,但无法从证书文件验证出证书是否被吊销。因此CA机构会通过发布CRL(Certificate Revocation List)来告知所有人,哪些证书已经被吊销。使用者为验证证书的合法性,需要通过验证证书签名来确保证书未被篡改,以及通过CRL查询确保证书未被吊销,此两步都完成后,方可说明证书合法性验证通过。
  因CRL巨大且具有时效性,因此设计出OCSP(Online Certificate Status Protocol)机制,可以实时查询证书状态。OCSP比CRL更具有时效性,并且可提供额外的状态信息。本文主要基于RFC6960和RFC5912进行解读。

2.OCSP原理

 2.1 OCSP 请求

  OCSP请求的ASN.1格式如下:
在这里插入图片描述

  1. tbsRequest:基础请求信息
  • version:协议版本,默认为v1,值为0。具有DEFAULT标记,编码时可省略。
  • requestorName:请求者名称,可选项
  • requestList: 需要检查的证书清单,可包含一个或多个证书信息
    • reqCert:需检查的证书信息
      • hashAlgorithm:生成issuerNameHash和issuerKeyHash值的HASH算法
      • issuerNameHash:证书颁发者的可分辨名称(DN)的HASH值。HASH值应以DER编码值计算(包含完整的TLV)
      • issuerKeyHash:颁发者公钥的HASH值
      • serialNumber:证书的序列号
    • singleRequestExtensions:该证书的请求扩展项,可选项,详见RFC6960 4.4章节。
  • requestExtensions:扩展信息。为防止重放攻击,可选择添加1个nonce。

2.optionalSignature: 请求签名,可选项

  • signatureAlgorithm: 算法标识符
  • signature:签名,对整个tbsRequest进行计算签名
  • certs:验证signature的证书,以便OCSP服务器验证signature合法性

  当进行OCSP请求时,主要在requestList->reqCert中填充所需认证的证书信息。若一次需检查多个证书,则存在多个reqCert。optionalSignature和requestExtensions等为可选项,通常不使用。

 2.2 OCSP响应

  OCSP响应的ASN.1格式如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. responseStatus:响应状态,为如下值之一
  • successful: 值为0,正常响应
  • malformedRequest:值为1,非法请求
  • internalError:值为2,颁发者内部错误
  • tryLater:值为3,稍后重试
  • sigRequired:值为5,请求必须进行签名
  • unauthorized:值为6,请求未经过授权
  1. responseBytes:响应内容,只有responseStatus为successful时才存在。
  • responseType:对于基础的OCSP响应,此值为id-pkix-ocsp-basic
  • response:DER编码的BasicOCSPResponse
    • tbsResponseData:响应数据
      • version:默认值v1,可省略
      • responderID:可填充名称或HASH,若选择HASH,HASH值为OCSP响应者证书的SHA-1值(包含tag和length字段)
      • producedAt:OCSP响应程序签署此响应的时间
      • responses:校验结果内容。包含N个SingleResponse的数组。OCSP请求中有N个证书,此处就是N个SingleResponse组成的数组,每个SingleResponse的结构如下
        • certID:和OCSP请求中的reqCert一致。
          • hashAlgorithm:生成issuerNameHash和issuerKeyHash值的HASH算法
          • issuerNameHash:证书颁发者的可分辨名称(DN)的HASH值。HASH值应以DER编码值计算
          • issuerKeyHash:颁发者公钥的HASH值
          • serialNumber:证书的序列号
        • certStatus:CHOICE类型,表明当前证书的检查结果,结果为三选一。
          • good: NULL,表明OCSP通过
          • revoked:表明证书被吊销,会包含吊销时间revocationTime、吊销理由revocationReason(可选)
          • unkown:状态未知
        • thisUpdate:响应者最近查询状态的时间。此时间不应晚于当前系统时间。
        • nextUpdate :建议下次查询时间。此时间不应早于当前系统时间。
        • singleExtensions:单个证书附加字段,可选项
      • responseExtensions:响应附加字段,可选项。当OCSP请求为防止重放攻击在requestExtensions字段添加noce时,此处应响应相同的noce值。
    • signatureAlgorithm:算法标识符
    • signature:签名值,基于tbsResponseData(DER编码)内容计算
    • certs:验证signature的证书,可选项

3.OCSP实践

  在了解OCSP原理后,应通过实践验证下解读的原理正确性。本章节以cn.bing.com为目标,进行验证。

 3.1 获取X509证书

方法1
  使用如下命令:openssl s_client -connect cn.bing.com:443,将“-----BEGIN CERTIFICATE-----”开始到“-----END CERTIFICATE-----”保存到bing.crt,即为网站证书
方法2
  用浏览器直接打开cn.bing.com,例如使用chrome
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  选择最下面的www.bing.com证书,导出文件保存的后缀为crt即可
在这里插入图片描述

 3.2 查看OCSP URL

方法1
  使用如下命令:openssl x509 -noout -ocsp_uri -in bing.crt
在这里插入图片描述

  可看到OCSP校验地址为http://oneocsp.microsoft.com/ocsp
方法2
  在windows中直接双击证书文件bing.crt,在“详细信息”-“授权信息访问”中,可查询到OCSP校验地址
在这里插入图片描述

 3.3 证书链

在这里插入图片描述
  如图所示,cn.bing.com的证书链共有三级
在这里插入图片描述
  将DigiCert Global Root G2和Microsoft Azure RSA TLS Issuing CA 04两个证书分别到处
在这里插入图片描述

  使用文本工具打开两个证书,将其中的内容复制到1个新文件中,该文件即为证书链文件。需注意Microsoft Azure RSA TLS Issuing CA 04证书放在新文件最开始,DigiCert Global Root G2放在文件后部,合并后的证书链文件如下图:
在这里插入图片描述

 3.4 OCSP验证

  先使用wireshark开启抓包,随后使用如下命令进行OCSP认证请求:
openssl ocsp -issuer "Microsoft Azure RSA TLS Issuing CA 04.crt" -CAfile chain.pem -cert bing.crt -text -url http://oneocsp.microsoft.com/ocsp,可以看到请求和响应信息,在尾部显示Response Verify Ok,以及bing.crt检查结果是good
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  抓包文件如下:
  ocsp.pcapng

 3.5 OCSP请求分析

  通过分析wireshark抓包信息,OCSP请求包如下,结合2.1章节OCSP请求格式
  在这里插入图片描述
  optionalSignature未使用,tbsRequest数据解析如下

  3.5.1 version

   使用默认值,报文中已省略

  3.5.2 requestorName

   可选项,报文中未使用

  3.5.3 requestList

  1. reqCert字段
  • hashAlgorithm:表明使用SHA-1的HASH算法

  • issuerNameHash:值为16进制的e475019dc323e226741d6c40390795f90596462e。此值由颁发者DN的DER编码通过SHA-1计算出。计算过程如下:
    1. 查看bing.crt证书的颁发者
    在这里插入图片描述
    2. 因HASH值需要以DER编码进行计算,故查看DER编码内容
    在这里插入图片描述
    3. 将此段内容单独保存成文件bing-dn.bin(注意格式,以二进制格式保存)
    在这里插入图片描述
    4. 使用openssl命令openssl dgst -sha1 .\bing-dn.bin计算SHA-1值,结果和请求报文中的值一致。
    在这里插入图片描述

  • issuerKeyHash:值为16进制的3b70d153e976259d60a8ca660fc69bae6f54166a。此值由颁发者公钥的DER编码(不包含tag和length)通过SHA-1计算出。计算过程如下:
    1. bing.crt的颁发者证书为Microsoft Azure RSA TLS Issuing CA 04
    在这里插入图片描述
    2. 查看Microsoft Azure RSA TLS Issuing CA 04.crt的DER编码格式的公钥字段subjectPublicKeyInfo(注意:不包含tag和length)
    在这里插入图片描述
    3.将以上值单独保存到文件Microsoft Azure RSA TLS Issuing CA 04-public.bin(注意格式,以二进制格式保存)
    在这里插入图片描述
    4. 使用openssl命令openssl dgst -sha1 .\Microsoft Azure RSA TLS Issuing CA 04-public.bin计算SHA-1值,结果和请求报文中的值一致。
    在这里插入图片描述

  • serialNumber:值为16进制的3300651d5cf9d60cb7fdb542b8000000651d5c,打开bing.crt查看,序列号一致
    在这里插入图片描述

  1. singleRequestExtensions:可选项,报文中未使用

  3.5.4 requestExtensions

   扩展信息报文中包含nonce信息
   在这里插入图片描述

 3.6 OCSP响应分析

 OCSP响应抓包内容如下,结合2.3章节分析
在这里插入图片描述

  3.6.1 responseStatus

   报文中值为0x00,代表successful,响应成功

  3.6.2 responseBytes

   因responseStatus是successful,故此值存在

   3.6.2.1 responseBytes

   此为基础的OCSP响应,因此值为id-pkix-ocsp-basic
   在这里插入图片描述

   3.6.2.2 response(BasicOCSPResponse)
  1. tbsResponseData
    在这里插入图片描述
  • version:默认值,报文中已省略

  • responderID:报文中值为5ec339aeb89e74355bcc6231f9d43644e7eeb07f,计算过程为:

  • producedAt:报文中值为UTF时间在这里插入图片描述

  • responses:因请求就检查1个证书,此处responses数据中只有1个SingleResponse,SingleResponse数据如下

    • certID:值和OCSP请求中的一致。在存在多个SingleResponse时,可用于表明,该数组是对哪个证书的响应。在这里插入图片描述

    • certStatus:ASN.1编码值为80 00,代表good,表明certID标记的证书OCSP验证结果为未吊销,处于正常使用状态

    • thisUpdate:UTC时间,响应者最近查询状态的时间。

    • nextUpdate:UTC时间,建议下次查询时间。

    • singleExtensions:该值解读未仔细查询在这里插入图片描述

  • responseExtensions:因OCSP请求中requestExtensions中附加了nonce,因此此处将请求的nonce值返回,以表明响应何请求,避免重放攻击。

  1. signatureAlgorithm
    指明signature字段使用的签名算法,此处为在这里插入图片描述

  2. signature
    在这里插入图片描述
    在signature之前存在一个ASN.1编码为05 00的NULL值,OCSP响应中未发现此定义,也未查询到相关解读,暂留。

  3. certs
    验证signature的证书,将抓包中的整个Certificate选择,选择复制成Hex Stream,随后以二进制保存到ocsp.crt文件中,该文件即为OCSP响应的验签证书。
    在这里插入图片描述
    在这里插入图片描述

  文件如下:ocsp.crt

 3.7 OCSP响应手动验证

  在3.4章节,可以看到openssl已自动验证OCSP响应,结果为通过。此处,进行手动验证OCSP响应。OCSP验证应包含2步:

  1. 使用证书链验证OCSP响应中certs字段指明的证书是否合法
  2. 若certs指明的证书通过证书链验证,使用此证书验证OCSP响应中的signature字段签名是否合法
    若以上两步均验证通过,可认为OCSP响应合法,则正常读取certStatus状态值,以读取OCSP验证结果。

  3.7.1 证书链验证OCSP证书

  在3.6章节,我们从OCSP响应的certs字段提取到证书ocsp.crt。使用openssl命令openssl verify -verbose -CAfile chain.pem ocsp.crt,验证通过:
在这里插入图片描述

  3.7.2 验证签名

  使用ocsp.crt证书验签OCSP响应中的signature,待验签内容为OCSP响应中的tbsResponseData。验签步骤如下:

  1. 将OCSP响应中的tbsResponseData字段值以二进制格式保存到tbsResponseData.bin文件中
    在这里插入图片描述
    在这里插入图片描述

  2. 将OCSP响应中的signature字段值以二进制保存到ocsp-signature.bin文件中
    在这里插入图片描述
    在这里插入图片描述

  3. 通过signatureAlgorithm字段可知签名算法为sha256WithRSAEncryption
    在这里插入图片描述

首先从ocsp.crt提取出公钥到ocsp.pem,命令如下:
openssl x509 -in ocsp.crt -pubkey -noout -out ocsp.pem
随后进行验签
openssl dgst -sha256 -verify ocsp.pem -signature ocsp-signature.bin tbsResponseData.bin
在这里插入图片描述

可看到验签通过。

4.总结

  当要检查某个证书(下称待检查证书A)是否被吊销时,客户端需要发送OCSP请求,OCSP请求中附带“待检查证书A”的序列号等信息,当OCSP服务器收到OCSP请求时,读取OCSP请求中“待检查证书A”的序列号信息,并查询CRL,得到检查结果,随后将检查结果封装到OCSP响应中,使用服务器私钥对OCSP响应进行签名并将签名私钥对应的证书(称为OCSP响应证书B)和签名值附加在OCSP响应中。当客户端收到OCSP响应时,首先使用证书链对OCSP响应中的“OCSP响应证书B”进行验证,验证通过后,再使用“OCSP响应证书B”对OCSP响应中的响应值tbsResponse和签名值signature进行验签,验签通过,则表明OCSP响应合法,此时可读取OCSP响应中“待检查证书A”的校验结果,以确认“待检查证书A”是否被吊销。

相关文章:

OCSP原理及实践

1.OCSP介绍 在PKI体系中,CA机构颁发合法的证书。使用者可以使用CA根证书验证该证书是否被篡改过,但无法从证书文件验证出证书是否被吊销。因此CA机构会通过发布CRL(Certificate Revocation List)来告知所有人,哪些证书…...

前端流程图框架

1、Mermaid: Mermaid 是一个用于绘制流程图、时序图、甘特图等的纯 JavaScript 库。它使用简单的文本语法来定义图表结构,支持多种类型的流程图,易于集成到网页中。 2、Draw.io: Draw.io 是一个在线的流程图绘制工具&#xff0…...

13.6 编写go代码接收webhook的告警发送钉钉

本节重点介绍 : 使用钉钉机器人发送到钉钉群通过alertmanager webhook发送我们自定义的go程序中解析alert对象并拼接钉钉信息发送 需求分析 使用钉钉机器人发送到钉钉群 钉钉机器人发送群消息 文档地址 通过webhook发送我们自定义的go程序中 然后解析发过来的alert&#x…...

codetest

1、寻找身高相近的小朋友 #include <iostream> #include <bits/stdc.h>using namespace std;//寻找身高相近的小朋友//输入&#xff0c;第一行两个整数&#xff0c;分别是小明身高&#xff0c;其他小伙伴个数&#xff0c;第二行是其他小伙伴的身高 //100 10 //95 …...

MyBatis-Plus拦截器接口InnerInterceptor失效?因MyBatis缓存机制而踩的一个深坑

InnerInterceptor 接口是 MyBatis-Plus 提供的一个拦截器接口&#xff0c;用于实现一些常用的 SQL 处理逻辑。例如某个组件运作在多系统的平台上&#xff0c;不同系统需要隔离&#xff0c;于是可以通过这个拦截器接口&#xff0c;给每一条要执行的sql末尾拼接一个AND systemId …...

jmeter之计数器

计数器作用&#xff1a; 对于自增长的数字&#xff0c;可以使用计数器实现 一、添加计数器及参数说明 添加计数器 计数器参数说明 Starting value&#xff1a;给定计数器的起始值、初始值&#xff0c;第一次迭代时&#xff0c;会把该值赋给计数器 递增&#xff1a;每次迭代…...

协议集合(学习笔记)

按照数据的传送方式&#xff0c;通信协议可分为以下2种。 串行通信&#xff1a;串行&#xff08;Serial&#xff09;指的是逐个传输数据位&#xff0c;一次只传输一个位。 并行通信&#xff1a;并行&#xff08;Parallel&#xff09;指的是同时传输多个数据位&#xff0c;一次…...

进程

进程 进程进程的含义PCB块内存空间进程分类&#xff1a;进程的作用进程的状态进程已经准备好执行&#xff0c;所有的资源都已分配&#xff0c;只等待CPU时间进程的调度 进程相关命6.查询进程相关命令1.ps aux2.top3.kill和killall发送一个信号 函数1.fork();2.getpid3.getppid示…...

10款好用的电脑监控软件推荐丨2024年干货整理,赶紧码住!

选择合适的电脑监控软件可以帮助企业和个人更好地管理和保护其计算机资源。以下是10款较为好用的电脑监控软件推荐。 1. 安企神 7天试用体验https://work.weixin.qq.com/ca/cawcde06a33907e60a 简介&#xff1a;安企神是一款专为企业设计的信息安全管理软件&#xff0c;提供…...

【MySQL-24】万字全面解析<索引>——【介绍&语法&性能分析&使用规则】

前言 大家好吖&#xff0c;欢迎来到 YY 滴MySQL系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Lin…...

刷题记录(2)

1. HWOD机试 - 模拟消息队列(100) package com.yue.test;import org.junit.Test;import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List;/*** Author: 夜雨* Date: 2021-12-08-10:31* Description:* Version 1.0*/ public…...

JVM中的GC过程

堆内存结构&#xff1a;在详细讨论GC过程之前&#xff0c;需要了解JVM堆内存的结构。JVM堆内存通常被分为新生代&#xff08;Young Generation&#xff09;和老年代&#xff08;Old Generation&#xff09;&#xff0c;其中新生代又进一步细分为Eden区&#xff08;Eden Space&a…...

Python实战项目:天气数据爬取+数据可视化(完整代码)_python爬虫实战

一、选题的背景 随着人们对天气的关注逐渐增加&#xff0c;天气预报数据的获取与可视化成为了当今的热门话题&#xff0c;天气预报我们每天都会关注&#xff0c;天气情况会影响到我们日常的增减衣物、出行安排等。每天的气温、相对湿度、降水量以及风向风速是关注的焦点。通过…...

FFmpeg源码:compute_frame_duration函数分析

一、compute_frame_duration函数的定义 compute_frame_duration函数定义在FFmpeg源码&#xff08;本文演示用的FFmpeg源码版本为7.0.1&#xff09;的源文件libavformat/demux.c中&#xff1a; /*** Return the frame duration in seconds. Return 0 if not available.*/ stat…...

ARM 异常处理(21)

异常的流程&#xff1a; 首先&#xff1a; 在硬件上阶段&#xff1a; 这里是4大步3小步 然后是 异常处理&#xff1a; 这里主要是保存现场&#xff0c;进行异常处理 然后是 异常返回&#xff1a; 主要指 恢复现场&#xff0c; 再跳转回去。 首先硬件上&#xff…...

我开源了我的新闻网站项目

&#x1f389; 前言 暑假时写了一个Web项目&#xff0c;感觉做的还是有模有样的&#xff0c;不仅做了前端&#xff0c;还加了后端并连了数据库。最近也是将它开源了&#xff0c;一来是为了熟悉一下Github流程和Git使用命令&#xff0c;二来也是想和大家分享一下自己的成果&…...

LlamaIndex 使用 RouterOutputAgentWorkflow

LlamaIndex 中提供了一个 RouterOutputAgentWorkflow 功能&#xff0c;可以集成多个 QueryTool&#xff0c;根据用户的输入判断使用那个 QueryEngine&#xff0c;在做查询的时候&#xff0c;可以从不同的数据源进行查询&#xff0c;例如确定的数据从数据库查询&#xff0c;如果…...

设计模式学习-责任链模式

概念 使多个对象都有机会处理请求&#xff0c;从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有对象处理它为止. 代码编写 using UnityEngine; using System.Collections; public class ChainOfResp…...

【全网最全】2024年数学建模国赛B题31页完整建模过程+成品论文+matlab/python代码等(后续会更新

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片&#xff0c;那是获取资料的入口&#xff01; 2024数学建模国赛B题 【全网最全】2024年数学建模国赛B题31页完整建模过程成品论文matlab/python代码等&#xff08;后续会更新「首先来看看目前已有的资料…...

第二十一届华为杯数学建模经验分享之资料分享篇

今天给大家分享一些数学建模的资料&#xff0c;通过这些资料的学习相信你们一定在比赛中获得好的成绩。今天分享的资料包括美赛和国赛的优秀论文集、研赛的优秀论文集、推荐数学建模的相关书籍、智能算法的学习PPT、python机器学习的书籍和数学建模经验分享与总结&#xff0c;其…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...