HTTPS原理

ops/2024/12/23 4:35:28/
http://www.w3.org/2000/svg" style="display: none;">

HTTPS原理

https>https_1">Http和https>https区别

HTTPS(安全的HTTP通道)HTTP(超文本传输协议)
HTTP over SecureSocket LayerHyper Text Transfer Protocol
HTTP+SSL/ TLS =HTTPSHTTP over TCP/IP
https>https经过ssl、tls算法加密,比http超文本传输协议更安全

https>https://img-blog.csdnimg.cn/direct/6edc7aff999b4667957adf1f6cb775ed.png" alt="在这里插入图片描述" />
https>https://img-blog.csdnimg.cn/direct/a13f542134d345d7b6dd29d4f73df1b7.png" alt="在这里插入图片描述" />

HTTPSHTTP
安全性:高安全性:低
加密传输(SSL/TSL),混合加密方式明文传输
第三方机构认证的证书进行身份认证身份冒充
保证完整性传输过程可能被篡改
不可否认、抵赖无法保证事务真实性

加密方式分对称加密和非对称加密,https>https是把这两种都用上了称之为混合加密

HTTPSHTTP
端口:443端口:80
灵活性:低灵活性:高
访问速度:慢访问速度:快
经济适用度:收费 CA机构证书经济适用度:免费

HTTPS工作流程

https>https://img-blog.csdnimg.cn/direct/c9446ce54bee4a1c988921f0a730697c.png" alt="在这里插入图片描述" />
https>https://img-blog.csdnimg.cn/direct/72480abdcc17468dbe45cb41ab68392c.png" alt="在这里插入图片描述" />
https>https://img-blog.csdnimg.cn/direct/3dbbdd70f26343abbf49a1b0f0b37450.png" alt="在这里插入图片描述" />
tls1.2版本过程 四次握手
client端发起请求从server端获取公钥证书
client端生成对称密钥,并通过公钥进行加密后发给server端
server端通过私钥进行解密,得到密钥
client端和server端都通过对称密钥:

  • 加密明文并发送
  • 解密密文并得到明文

tls1.3版本过程 三次握手
client携带公钥发起请求(端口443)
server计算出对称密钥,用client的公钥加密服务端参数并返回
client验证身份,用私钥解密服务端参数(对称密钥)
c/s双方使用对称密钥

client发送给server时黑客可以拦截获取密钥和公钥,所以tls1.3这做了改进

https>https_50">https>https实现原理:机密性

https>https://img-blog.csdnimg.cn/direct/7243bd8ebea646d59f66c8c25e5eadf9.png" alt="在这里插入图片描述" />
混合加密:非对称加密+对称加密

非对称加密:公钥 & 私钥
安全传输对称密钥
常见算法:RSAECC
速度慢

对称加密: 密钥
使用对称密钥,加密、解密数据
常见算法:AES、ChaCha20
速度快

https>https_64">https>https实现原理:完整性

https>https://img-blog.csdnimg.cn/direct/0b93b13c96184983bb452a6c3267880e.png" alt="在这里插入图片描述" />

https>https_67">https>https实现原理:身份认证和不可否认

https>https://img-blog.csdnimg.cn/direct/04c4afb40d8d4dedba3f86891d9bb2b3.png" alt="在这里插入图片描述" />

https>https_69">https>https应用

Https应用流程

https>https://img-blog.csdnimg.cn/direct/62cd8b97ac88417f9ea80fbe42da6e66.png" alt="在这里插入图片描述" />

OpenSSL证书生成

安装OpenSSL工具

OpenSSL中包含生成证书的工具和各类加密算法。

下载OpenSSL

Windows:http://slproweb.com/products/Win32OpenSSL.html

Linux:https>https://www.openssl.org/source/
https>https://img-blog.csdnimg.cn/direct/51c95f31838740b48160b77420dff22e.png" alt="在这里插入图片描述" />

安装OpenSSL

Windows安装:

双击运行,安装到指定目录即可。

Linux安装(从1.0.x升级):

1.查看版本命令

openssl version 
openssl version -a

2.下载指定版本的 openssl 软件,两种方式

https>https://www.openssl.org/source/
wget https>https://www.openssl.org/source/openssl-1.1.1o.tar.gz

3.解压压缩包

tar -zxvf openssl-1.1.1o.tar.gz

4.进入解压后的文件夹执行以下命令编译安装

./config shared zlib
make && make install

5.备份原来的软链接

mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
find / -name openssl

6.重新建立软链接

ln -s /usr/local/bin/openssl /usr/bin/openssl
ln -s /usr/local/include/openssl /usr/include/openssl
echo "/usr/local/lib64/" >> /etc/ld.so.conf
ldconfig// 验证安装
openssl version -a

02.生成服务端证书

在Windows系统中生成服务端证书,然后再把相关文件上传到服务器。

查看Win系统已存证书

certmgr.msc 

证书中的信息

  • Country Name (2 letter code) [XX]:CN #请求签署人的信息
  • State or Province Name (full name) []: #请求签署人的省份名字
  • Locality Name (eg, city) [Default City]:# 请求签署人的城市名字
  • Organization Name (eg, company) [Default Company Ltd]:#请求签署人的公司名字
  • Organizational Unit Name (eg, section) []:#请求签署人的部门名字
  • Common Name (eg, your name or your server’s hostname) []:#这里一般填写请求人的服务器域名

key:私钥

csr:证书签名请求文件,即待签名证书

crt:证书

在Win下生成证书

1.生成私钥:.key

找到OpenSSL安装目录下的/bin目录中的OpenSSL.exe

执行命令(注意目录的访问权限,下同)

openssl genrsa -des3 -out c:/dev/server.key

生成私钥,需要提供一个至少4位,最多1023位的密码

2.由私钥创建待签名证书:.csr

openssl.exe req -new -key c:/dev/server.key -out c:/dev/pub.csr

需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,可以写自己的名字或者域名,如果要支持https>https,Common Name应该与域名保持一致,否则会引起浏览器警告。

3.查看证书中的内容

openssl.exe req -text -in c:/dev/pub.csr -noout

生成内容清单:

server.key:服务器私钥

pub.csr:服务器待签名证书

自建CA

操作系统(windows, linux, unix ,android, ios等)都预置了很多信任的根证书,比如我的windows中就包含VeriSign的根证书,那么浏览器访问服务器比如支付宝www.alipay.com时,SSL协议握手时服务器就会把它的服务器证书发给用户浏览器,而这本服务器证书又是比如VeriSign颁发的,自然就验证通过了。

由于费用的原因,我们需要自建CA机构,来给我们自己的证书进行签名。所谓“CA机构”的本质,其实也是一套证书,只不过这套证书具有“公信力”,可以用来给别人签名。

1.创建CA私钥
openssl.exe genrsa -out c:/dev/myca.key 2048
2.生成CA待签名证书
openssl.exe req -new -key c:/dev/myca.key -out c:/dev/myca.csr
3.生成CA根证书
openssl.exe x509 -req -in c:/dev/myca.csr -extensions v3_ca -signkey c:/dev/myca.key -out c:/dev/myca.crt
4.对服务器证书签名

对上一个环节生成的服务端 待签名证书(.csr) 进行签名,需要用到本CA机构的 私钥(.key)证书(.crt) 作为参数:

openssl x509 -days 365 -req -in c:/dev/pub.csr -extensions v3_req -CAkey c:/dev/myca.key -CA c:/dev/myca.crt -CAcreateserial -out c:/dev/server.crt

生成内容清单:

myca.key:ca机构私钥

myca.csr:ca机构待签名证书

myca.crt:ca机构证书,即根证书

server.crt:服务器证书,被ca机构签名过的证书

Nginx配置Https

将生成好的服务端证书上传到服务器指定目录,并在Nignx中进行配置

## 新建serverserver {listen       443 ssl;server_name  aa.abc.com;    #域名ssl_certificate      /data/cert/server.crt; #服务器证书  ssl_certificate_key  /data/cert/server.key; #私钥}

添加信任

在当前系统中安装证书

http_255">http性能优化


http://www.ppmy.cn/ops/11929.html

相关文章

ABB机器人IRB4400平衡缸维修小技巧

ABB平衡缸是机器人是一个不可忽视的重要组成部分。ABB机器人平衡缸通常采用高强度材料制造,设计精巧,方便地集成到IRB4400机器人手臂中。此外,平衡缸还具备良好的密封性能,防止气体或液体泄漏,确保其耐用性和稳定性。因…

LoRA(Low-Rank Adaptation)原理与应用

LoRA是一种用于调整和微调大型神经网络的技术,特别适用于直接微调整个网络参数成本高昂或不切实际的情况。 原理讲解: 1. 低秩适应(LoRA) LoRA的核心思想是在模型的权重矩阵中引入一个低秩结构,通常是通过添加一个可…

JMeter常用插件

一、Basic Graphs 三个基本图表,配置如下三个监听器,就可以显示平均响应时间,活动线程数,每秒事务所等; Basic Graphs插件响应时间Average Response Time响应时间:jpgc - Response Times Over Time活动线程…

重磅发布 | 《网络安全专用产品指南》(第一版)

2017年6月1日,《中华人民共和国网络安全法》正式实施,明确规定“网络关键设备和网络安全专用产品应当按照相关国家标准的强制性要求,由具备资格的机构安全认证合格或者安全检测符合要求后,方可销售或者提供。国家网信部门会同国务…

提升性能:QML Canvas 绘图优化技巧

减少绘制操作: 当我们有一个动态更新的图形,例如实时更新的数据可视化图表,可以通过设置一个定时器来控制更新频率,而不是每次数据更新都重新绘制整个图形。 使用硬件加速: 通过将Canvas的renderTarget属性设置为Canv…

MySQL约束

概述 1、概念: 约束是作用于表中字段上的规则,用于限制存储在表中的数据。 2、目的: 保证数据库中数据的正确、有效性和完整性。 3、分类: 约束 描述 关键字 非空约束 限制该字段的数据不能为null NOT NULL 唯一约束 …

Goland远程连接Linux进行项目开发

文章目录 1、Linux上安装go的环境2、配置远程连接3、其他配置入口 跑新项目,有个confluent-Kafka-go的依赖在Windows上编译不通过,报错信息: undefined reference to __imp__xxx似乎是这个依赖在Windows上不支持,选择让…

js进行数据移除性能比较(splice,map)

当使用 splice() 方法处理大量数据时,确实会遇到性能问题,因为它涉及到移动数组中的元素,导致操作的时间复杂度为 O(n)。对于大量数据,频繁的插入和删除可能会导致性能下降。 1、设置数组数据为10000,使用splice移除数…