Https通信原理一探究竟

简介

HTTP

HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是一个基于请求与响应,无状态的,应用层的协议;使用端口为80

HTTPS

https相当于http+ssl/tls协议;https默认使用的端口为443。HTTPS简单来说就是一个加强版的HTTP,运行在SSL(Secure Socket Layer)或者TLS(TLS:Transport Layer Security)层上。SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密

特点:
内容加密:使用对称和非称加密
验证身份:通过证书认证客户端访问的是自己的服务器
保护数据完整性:防止传输的内容被中间人冒充或者篡改

HTTPS通信原理

在这里插入图片描述

客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤如下所示:

 1.客户端向服务器发起HTTPS请求,连接到服务器的443端口
 2.服务器端配置公钥和私钥   
 3.服务器将自己的公钥发送给客户端
 4.客户端收到服务器端的公钥之后,会对公钥进行检查,验证服务器发送的证书信息的合法性, 如果公钥合格,那么客户端会生成一个随机值(是对称加密的密钥),我们将该密钥称之为client key。然后用服务器的公钥对客户端密钥进行非对称加密,这样client key就变成密文了。 
 5.客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。
 6.服务器接收到后,用私钥进行非对称解密,得到client key。然后用client key对数据进行对称加密,这样数据就变成了密文。
 7.然后服务器将加密后的密文发送给客户端。
 8.客户端收到服务器发来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据	

https单向认证和双向认证的区别

单向认证:简单来说,是只有一个对象验证对端的证书的合法性。
一般来说,都是client来校验服务器的合法性。那么client需要一个ca.crt,服务器需要配置server.crt,server.key

双向认证:指的是相互校验,服务器需要校验每个client,client也需要校验服务器。
server 需要 server.key 、server.crt 、ca.crt
client 需要 client.key 、client.crt 、ca.crt

HTTPS-加密方式

对称加密:又叫私钥加密,就是加密和解密使用同一个密钥;需要把私钥发送到其他客户端上(不安全);

 加密过程如下:明文 + 加密算法 + 私钥 => 密文
 解密过程如下:密文 + 解密算法 + 私钥 => 明文

 缺点:对称加密的算法是公开的,所以一旦私钥被泄露,那么密文就很容易被破解

非对称加密:加密和解密使用不同的密钥,分别称为公钥和私钥;。若用公钥对数据进行加密,必须用私钥才能解密。

  缺点:消耗CPU资源非常大,效率很低,严重影响HTTPS的性能和速度. 
被公钥加密过的密文只能被私钥解密,过程如下:

明文 + 加密算法 + 公钥 => 密文, 密文 + 解密算法 + 私钥 => 明文

 被私钥加密过的密文只能被公钥解密,过程如下:

明文 + 加密算法 + 私钥 => 密文, 密文 + 解密算法 + 公钥 => 明文

数字签名 防止传输的内容被中间人冒充或者篡改。

在这里插入图片描述

OpenSSL使用

介绍

OpenSSL是传输层安全(TLS)和安全套接字层(SSL)协议的一个健壮的、商业级的、全功能的工具包。实现秘钥证书管理、对称加密和非对称加密

命令使用(自签证书生成root、二级、三级证书)

vim /root/abupdate-1d/root/openssl.cnf
default_days = 1 #证书时间
default_crl_days= 1 #证书时间
[ req_distinguished_name ]
countryName = CN
stateOrProvinceName = SH
localityName = SH
organizationName = AB
organizationalUnitName = AB
commonName = * #根证书,所以dns为*

根证书的生成

#生成key (若加如des加密算法,生成csr等需要输入密码)
openssl genrsa -out ca.key 2048
#生成证书签署请求csr
openssl req -new -key ca.key -out ca.csr #指定省份等信息
#颁发证书crt (指定生成证书的天数)
openssl x509 -req -days 1 -in ca.csr -signkey ca.key -out ca.crt
服务器端生成key、crt等文件
#生成key
openssl req -new -key ca.key -out ca.csr
#生成csr
openssl req -new -key server.key -out server.csr
#生成crt
openssl ca -in server.csr -out server.crt -cert …/ca/root/key/cacert.crt -keyfile …/ca/root/key/cakey.key -> -config …/ca/root/openssl.cnf
注意:颁发的二级证书和三级证书,对应的key和crt是不同的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值