本文引用了作者Smily(博客:blog.csdn.net/qq_20521573)的文章内容,感谢无私分享。
在被问到抓包时的一些问题:证书、单向认证、双向认证怎么处理,以及绕过背后的原理时,一时很难说清个大概,于是整理了下思绪,将这些知识进行总结和整理,末尾再对一个某社交APP进行实战突破HTTPS双向认证进行抓包。--团队新加入成员:miniboom
gRPC 是由 Google 开发的高性能、开源的 RPC(Remote Procedure Call)框架,用于在客户端和服务器之间进行通信。它基于 Protocol Buffers(protobuf)进行消息序列化和反序列化,支持多种通信协议,如 HTTP/2、TCP 和 gRPC 提供的协议。
辉哥在学习蚂蚁BAAS系统时,发现了一堆证书或者公私钥名称,包括trustCa,ca.crt,client.crt,client.key,pub.txt,MyPKCS12.p12等等文件,不知道干什么用,内心是奔溃的。后来在阿里专家孙善禄的指导下,输出了《蚂蚁区块链第8课 如何创建新的账户?》搞清楚了user.key和pub.txt文件的作用。 本文着重于介绍SSL/TLS工作原理,带着大家一起学习trustCa,ca.crt,client.key,client.crt,client.key等文件的作用。
grpc-go本身已经支持安全通信,该文是举例介绍下双向认证的安全通信,客户端和服务端是如何实现的。
总述 https简单来说就是在http协议的基础上增加了一层安全协议。通常为TLS或者SSL(一般现在都采用TLS,更加安全)。这一层安全协议的最主要的作用有两个: 1. 验证服务端或客户端的合法性
双向认证,顾名思义,客户端和服务器端都需要验证对方的身份,在建立HTTPS连接的过程中,握手的流程比单向认证多了几步。单向认证的过程,客户端从服务器端下载服务器端公钥证书进行验证,然后建立安全通信通道。双向通信流程,客户端除了需要从服务器端下载服务器的公钥证书进行验证外,还需要把客户端的公钥证书上传到服务器端给服务器端进行验证,等双方都认证通过了,才开始建立安全通信通道进行数据传输。
HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立安全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的安全性与完整性。
在RFC4346中也这样分类,不过上层协议不只是握手协议, 也包括应用层数据、告警协议、密码变更协议,以上四种统称之为TLS Handshake Protocal。
在一次测试中偶然遇到一个https双向认证的手机app(fiddler抓包提示需要提供客户端证书),平时一梭子能搞定地抓包姿势没有效果了,本着所有客户端发出的数据都是操控的想法,决定搞一搞,无非是采用什么方式的问题。双向认证只要拿到客户端加密的私钥证书就行了。
简单地来说,是基于ssl的http协议,依托ssl协议,https协议能够确保整个通信是加密的,密钥随机产生,并且能够通过数字证书验证通信双方的身份,以此来保障信息安全。其中证书包含了证书所代表一端的公钥,以及一些其所具有的基本信息,如机构名称,证书所作用域名、证书的数字签名等,通过数字签名能够验证证书的真实性。通信的内容使用对称加密方式进行加密,通信两端约定好通信密码后,通过公钥对密码进行加密传输,只有该公钥对应的私钥,也就是通信的另一端才能够解密获得通信密码,这样既保证了通信的安全,也使加密性能和时间成本可控。
为了更好的管理和控制App,IM提供了第三方回调功能,配置使用后,即时通信IM会向App后台服务器发送请求,App后台可以根据收到的回调处理业务逻辑、数据处理存储、功能控制干预,比如禁止该消息下发、用户登录状态的实时变更等。即时通信 IM 目前支持的回调请参见 回调命令列表
网络安全领域在攻和防对抗规模群体已经成熟,但是两端从业者对于安全原理掌握程度参差不齐,中间鸿沟般的差距构成了漏洞研究领域的主战场。笔者“三省吾身”,在工作中会犯错误把一些加密、认证、鉴权的概念和实现方案搞混,尤其是加解密涉及算法和公私钥机制的概念不深入细节。
1、客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息。 2、服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,同时也返回服务器端的证书,即公钥证书 3、客户端使用服务端返回的信息验证服务器的合法性,包括:
单向认证,只有一方需要验证对方的身份。通常是客户端验证服务器的身份。这种情况下,客户端会检查服务器提供的数字证书是否有效,以确定服务器是否合法。服务器不会验证客户端的身份。这种情况下,客户端可以确认它正在与合法的服务器进行通信,但服务器不能确定其与合法客户端通信。单向认证通常用于一些对服务器身份验证要求较高,但对客户端身份验证要求相对较低的场景,如网站访问。
HTTP(HyperText Transfer Protocol,超文本传输协议)被用于在Web浏览器和网站服务器之间传递信息,在TCP/IP中处于应用层。这里提一下TCP/IP的分层共分为四层:应用层、传输层、网络层、数据链路层; 分层的目的是:分层能够解耦,动态替换层内协议
问了下谷歌,有不少同道都遇到了返回值是 400 No required SSL certificate was sent 这种情况。
在开始之前,让我们来了解下https相关的核心知识,可以作为上篇https原理分析的补充。学习一个东西一定要先知道为什么要用它,我总结了两点:
提升编程效率的利器: 解析Google Guava库之集合篇RangeSet范围集合(五)
这个最简单的方法就是使用JustTrustMe,当然这个要依赖Xposed,手机没有root的话,你也可以使用太极、 VirtualXposed 等一些免root的xposed框架,这里就不主要说了。
https有单向认证和双向认证之分,单向认证即客户端只会认证服务端,双向认证是客户端需要认证服务端,服务端也需要认证客户端。
在腾讯云负载均衡CLB中创建HTTPS监听器,选择双向认证时,用户可以上传自认证的CA证书进行绑定。
最近手头有两个项目,XX导航和XX产业平台,都需要使用HTTPS协议,因此,这次对HTTPS协议做一次整理与分享。
HyperText Transfer Protocol,超文本传输协议,是互联网上使用最广泛的一种协议,所有WWW文件必须遵循的标准。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。
在汽车出行愈加智能化的今天,我们可以实现手机远程操控车辆解锁、启动通风、查看车辆周围影像,也可以通过 OTA(空中下载技术)完成升级车机固件、更新地图包等操作,自动驾驶技术更是可以让车辆根据路面状况自动辅助实施转向、加速和制动。
最近一份产品检测报告建议使用基于pki的认证方式,由于产品已实现https,商量之下认为其意思是使用双向认证以处理中间人形式攻击。
//第一种方式:配置文件 <network-security-config> <domain-config> <domain includeSubdomains="true">api.zuoyebang.cn</domain> <pin-set expiration="2025-01-01"> <pin digest="SHA-256">38JpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhK90=</pin> <pin digest="SHA-256">9k1a0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM90K=</pin> </pin-set> </domain-config> </network-security-config> //第二种方式:代码设置 fun sslPinning(): OkHttpClient { val builder = OkHttpClient.Builder() val pinners = CertificatePinner.Builder() .add("api.zuoyebang.cn", "sha256//89KpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRh00L=") .add("api.zuoyebang.com", "sha256//a8za0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1o=09") .build() builder.apply { certificatePinner(pinners) } return builder.build() }
•单向验证的情况是客户端校验证书,校验出错就无法访问•双向认证的情况是客户端校验证书的时候,服务端也要校验证书,有一端证书校验失败都无法访问数据。缺点是服务器的压力比较大
今天学习网络通信,看到使用ssl(Secure Sockets Layer)进行加密,由于对ssl只是有些概念上的了解,对于具体应用原理、过程和如何使用不慎了解,于是学习了一番,总结如下:
其实。。。ssl 证书没啥的,就是加密通讯用的,真正让大家头疼的不是 ssl 证书,而是跟 k8s 放在一块,结合 k8s 产生各种证书绕晕了。
为了便于更好的认识和理解SSL协议,这里着重介绍SSL协议的握手流程。SSL协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。SSL的握手流程非常有效的让客户端和服务器之间完成相互之间的身份认证。
Nginx为了支持Https需要安装http_ssl_module模块。在编译时需要带上--with-http_ssl_module参数。
春分时节,万物复苏,NanoMQ 项目又如期为大家献上了最新的 0.17 版本。这一版本主要对 2 个重要功能进行了升级:MQTT over QUIC 的双向认证和 DDS 协议转换代理的序列化代码自动生成。另外还新增了 QUIC 传输层的配置参数,增加了 Retain 消息的持久化,以及发布了 NanoSDK 0.9 版本等诸多更新。
在之前的文章中,我们探讨了认证和访问控制机制。接下来,我们将介绍传输层安全协议(TLS)在提升 MQTT 通信安全方面的重要作用。本文将着重介绍 TLS 以及它如何保证 MQTT 通信的完整性、机密性和真实性。
user1作为server端,user2作为client端,即client端需要验证server端证书。
参考文档 1. springboot项目配置阿里云ssl证书,http转https 2. Springboot配置使用ssl,使用https 3. Spring boot使用阿里云SSL证书报错:org/springframework/boot/context/properties/bind/Binder 4. IOException: Alias name tomcat does not identify a key entry 沃通证书部署问题解决办法
上一篇对http请求进行了封装,本章咱们接着往下进行,讲解可配置项高级选项,假如一个http接口需要进行验证,我们应该如何处理。
HTTPS在HTTP的基础上加入了SSL协议,对信息、数据加密,用来保证数据传输的安全。
HTTP 是明文传输,意味着端到端之间的任意节点都知道内容是消息传输内容是啥,这些节点可以是 路由器,代理等。
SSL/TSL 认证分单向认证和双向认证两种方式。简单说就是单向认证只是客户端对服务端的身份进行验证,双向认证是客户端和服务端互相进行身份认证。就比如,我们登录淘宝买东西,为了防止我们登录的是假淘宝网站,此时我们通过浏览器打开淘宝买东西时,浏览器会验证我们登录的网站是否是真的淘宝的网站,而淘宝网站不关心我们是否“合法”,这就是单向认证。而双向认证是服务端也需要对客户端做出认证。
openssl自建CA默认签署的是单域名证书,因为单台服务器上有多个https域名,签署多域名证书能方便很多,今天找了很久,除了一些卖证书的网站上有scr工具能加“使用者备用名称”,都没有找到openssl相关的添加方法。
HTTPS 在传输数据之前需要客户端与服务端之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL 协议是一套加密传输的协议,使用了非对称加密,对称加密以及 HASH 算法。以浏览器和服务器为例,HTTPS 通信过程如下:
CSR:证书签名请求,即公钥,生成证书时需要将此提交给证书机构,生成 X509 数字证书前,一般先由用户提交证书申请文件,然后由 CA 来签发证书
建立一个 MQTT 连接是使用 MQTT 协议进行通信的第一步。为了保证高可扩展性,在建立连接时 MQTT 协议提供了丰富的连接参数,以方便开发者能创建满足不同业务需求的物联网应用。本文将详细讲解 MQTT 中各个连接参数的作用,帮助开发者迈出使用 MQTT 的第一步。
本文是在工作过程中讲Zeppelin启用https过程和Hack内核以满足客户需求的记录。 原因是这客户很有意思,该客户中国分公司的人为了验证内网安全性,从国外找了一个渗透测试小组对Zeppelin和其他产品进行黑客测试,结果发现Zeppelin主要俩问题,一个是在内网没用https,一个是zeppelin里面可以执行shell命令和python语句。其实这不算大问题,zeppelin本来就是干这个用的。但是渗透小组不了解zeppelin是做什么的,认为即使在内网里,执行shell命令能查看操作系统的一些
所谓的流量控制就是接收方让发送方的发送速率不要太快,让接收方来得及接收。利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制。TCP窗口的单位是字节,不是报文段,发送方的发送窗口不能大于接收方给出的接收窗口(rwnd)的大小。
协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。HTTP协议,即超文本传输协议是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。HTTP协议是用于从万维网服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。众所周知,HTTP是一个无状态的应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。在Internet中所有的传输都是通过TCP/IP进行的。HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图所示:
领取专属 10元无门槛券
手把手带您无忧上云