Volley实现Https的单向认证

简介: Https通信流程图实现Https的单向认证,首先需要生成一个公钥和私钥,并且拿公钥到CA机构进行签名。生成签名证书。证书里面包含数字签名和公钥。
img_d2ca6d5231883394e4c586939bef1102.png
Https通信流程图

实现Https的单向认证,首先需要生成一个公钥和私钥,并且拿公钥到CA机构进行签名。生成签名证书。证书里面包含数字签名和公钥。然后客户端需要将公钥证书预埋在自己的APK中。在建立SSL连接的流程如下:

1、客户端发送ClientHello给服务器开始SSL通信,报文中包含了客户端支持的SSL版本、加密组件列表等

2、服务器可进行SSL通信时,会以ServerHello作为响应。报文包括了SSL版本、选择的某个加密组件。

3、服务器发送Certificate报文给客户端,报文中包含公开秘钥证书

4、客户端收到证书后验证其有效性(验证签名机构是否值得信任、服务器是否可信任),然后取出其公钥。

5、客户端用取出的公钥加密一个密码串发给服务器

6、服务器拿到加密的密码串后,使用私钥进行解密,获取明文密码串,之后双方的数据加密就使用这个密码串。

在Volley里面可以使用如下代码进行实现:

img_b7c5767c220c0d0b23b7f71e47f01d5e.png
创建SSLSockectFactory

然后将这个SSLSockectFactory传给Volley即可。

 对称加密和非对称加密:

非对称:在客户端访问https服务器的时候,服务器会把公钥证书发送给客户端,客户端会使用自己的证书进行比对,如果确认证书一致,客户端会生成一个随机数,这个随机数是后序通信加密的秘钥,客户端用证书中的公钥加密这个随机数,然后发送给服务器,服务器使用证书的私钥进行解密,获取客户端的随机数,这个过程就是非对称加解密。

对称:在服务器获取到客户端发送的随机数后,后续的通信就使用这个随机数进行加密解密,由于这个随机数只有客户端和服务器知道,所以这时对称加密是安全高效的。

目录
相关文章
|
1月前
|
运维 安全 Linux
CA认证与HTTPs原理介绍
CA认证与HTTPs原理介绍
28 2
|
1月前
|
存储 缓存 安全
https跳过SSL认证时是不是就是不加密的,相当于http?
https跳过SSL认证时是不是就是不加密的,相当于http?
121 0
|
3月前
|
JSON 安全 网络安全
超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
344 0
|
4月前
|
算法 安全 Java
Java【算法 04】HTTP的认证方式之DIGEST认证详细流程说明及举例
Java【算法 04】HTTP的认证方式之DIGEST认证详细流程说明及举例
166 0
|
4月前
|
算法 安全 网络安全
【厨房测试系列】第一章 手撸压力机(四)- http证书认证的实现
我们知道通常https接口是通过ssl/tsl进行加密的,有时候我们的请求https接口需要进行验证,需要在客户端发送请求时,带上密钥对通过摘要算法计算出的摘要及明文进行加密,而服务端则通过密钥进行解密。
|
7月前
|
安全 网络安全 数据安全/隐私保护
https跳过SSL认证时是不是就是不加密的,相当于http?
https跳过SSL认证时是不是就是不加密的,相当于http?
66 0
|
8月前
|
安全 网络安全 数据安全/隐私保护
https单向认证与双向认证
https的单向认证与双向认证流程介绍。
528 1
|
8月前
|
Java 应用服务中间件 网络安全
企业级Nginx实战-配置Https单向认证、双向认证
企业级Nginx实战-配置Https单向认证、双向认证
284 0
企业级Nginx实战-配置Https单向认证、双向认证
|
安全 网络安全 API
实战小结 | 使用objection快速绕过SSL Pinning(https强认证)
实战小结 | 使用objection快速绕过SSL Pinning(https强认证)
1997 0
|
关系型数据库 MySQL 中间件
使用 Go HTTP 框架 Hertz 进行 JWT 认证
上一篇文章简单介绍了一个高性能的 Go HTTP 框架——Hertz,本篇文章将围绕 Hertz 开源仓库的一个 demo,讲述如何使用 Hertz 完成 JWT 的认证与授权流程。
282 0
使用 Go HTTP 框架 Hertz 进行 JWT 认证