可靠的信息传输——HTTPS

本文详细阐述了HTTP和HTTPS的区别,主要在于HTTPS提供了加密和身份验证,确保数据安全。HTTPS通过TCP连接,经过SSL/TLS协议进行加密传输,防止中间人攻击。数字签名和数字证书用于验证服务器身份,防止内容被篡改。此外,还介绍了openssl等相关加密工具的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http和https的区别

谈到区别,我们不得不分别说一下http和https分别是什么,以其其是怎么实现连接的。

HTTP

1、建立tcp连接
2、client发送请求包给server(请求包包括请求行、请求头、请求内容)
3、server发送相应包给client(响应包包括响应行、响应头、响应内容)
4、close

HTTPS如何发起请求

1)客户端发起https请求,连接到服务端的443端口,发送SSL 协议的版本号,以及其他服务器和客户端之间通讯所需要的各种信息。

2)服务器向客户端传送 SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的数字签名、文件(未加密的)。这里也要发送数字签名:首先对要发送的文件和公钥使用hash函数生文件哈希值,然后用CA私钥加密文件哈希值,发送过去。

3)客户利用服务器传过来的信息验证服务器的合法性,怎么证明:首先把数字签名用CA公钥解密,生出文件哈希值,然后把文件经过hash算法算出文件哈希值,进行对比,看是不是一致,一致进行下面操作。

4)认证是服务器后,用服务器公钥加密随机值传到服务器

5)服务器使用私钥对其进行非对称解密后,得到客户端的随机值,然后把内容通过该随机值进行对称加密

6)服务端将对称加密后的信息发给客户端

7)客户端用之前的生成的随机值来进行对称解密,获取内容明文
在这里插入图片描述

数字签名:

(1).对要发送的内容使用hash函数生内容的文件哈希值

(2).使用自己的私钥对文件哈希值加密,就获得了自己的数字签名.

(3).将数字签名放到要发送的内容里面,一同发送.

(4).对方收到内容后,先用发送者的公钥(公钥在互联网上)对内容里的数字签名解密,得到内容的文件哈希值,

(5).然后对内容使用hash函数生成内容的文件哈希值.

(6).如果两个摘要一致,就证明内容没被修改过.
上面过程如下图:
在这里插入图片描述
如果文件被篡改,得到的文件哈希值就不一样。
在这里插入图片描述这时候又出现一个问题,我们用公钥解开数据签名,怎么证明公钥就是服务器的呢?如果是黑客的公钥和数字证书算出来的文件哈希值也是一样的。
在这里插入图片描述
因此我们有了证书,如何使用数据证书呢?首先在服务器端我们用CA机构的私钥对服务器文件和公钥(是一个文件)生成的文件哈希值进行数字签名,然后发文件和公钥(是一个文件)和 数字签名客户端,此时我客户端用根证书(这个是在操作系统里面的,不经过网络传输所以不会被篡改),然后用根证书里面CA公钥解锁数字签名,得到文件哈希值然后再通过文件和公钥(是一个文件)单向散列算法得到文件哈希值,对比两个哈希值是不是一样的, 不一样就说明被更改了。


数字签名和数字证书到底是什么

首先数字签名是用在非对称加密时侯确认内容被修改过没有,下面是没被修改的。
在这里插入图片描述
但是文件一旦被修改得到的文件哈希值肯定就不一样,因为:

服务器:
文件 ——>  文件哈希值(经过散列算法,是无法逆序还原的)  ——> 数字签名(服务器私钥加密)
如上是服务器生成数字签名的过程,他将把数字签名、文件、公钥一起发送给客户端
但是,当中途被黑客劫持,把文件内容修改了,那么我客户端验证的时侯就会出错。
客户端:
数字证书 ——> 文件哈希值(服务器公钥解密)
文件 ——> 文件哈希值(散列算法)
然后客户端比较二者区别,如果被修改,文件哈希值会不一样。  

在这里插入图片描述
但是这个时侯我黑客不直接篡改文件内容,而是冒充第三者,自己生成公钥和数字签名发给客户端,那么我客户端就不知道这个到底是谁发送的数据了。所以由此产生了数字证书(经过CA机构认证)。
在这里插入图片描述
首先在服务器端我们用CA机构的私钥对服务器文件和公钥(是一个文件)生成的文件哈希值进行数字签名,然后发文件和公钥(是一个文件)和 数字签名客户端,(这个是在操作系统里面的,不经过网络传输所以不会被篡改),然后用根证书里面CA公钥解锁数字签名,得到文件哈希值,然后再通过文件和公钥(是一个文件)单向散列算法得到文件哈希值,对比两个哈希值是不是一样的, 不一样就说明被更改了。

服务器:
文件 ——> 文件哈希值(经过散列算法,是无法逆序还原的)  ——> 数字证签名(CA私钥加密)
将公钥、文件、数字签名放入数字证书中发给客户端
客户端:
首先解析证书,得到数字签名和文件
数字签名 ——> 文件哈希值(使用CA公钥(在根证书里))
文件——> 文件哈希值(哈希算法)
然后比较二者,看是否相同,相同就没有被篡改。

以上过程就证明了双方东西是不是被窃听了。就可以进行下面的传输操作了。
在这里插入图片描述

openssl
    enc:通用加密程序,可以使用不同的加密组合完成加密,输入及输出可以通过Base64编码转换。 

    dgst:通用邮件文摘,使用f md2, md5, sha (sha-0 or sha-1)或者mdc2等算法。 

    rsa:操纵RSA 私钥。 

    dsa:操纵DSA 私钥。 

    dh:操纵Diffie-Hellman参数文件。 

    crt2pkcs7:产生包括了一个crl和证书的pkcs7对象。 

    x509:操纵x509证书, “自签”证书。 

    req:操纵PKCS#10证书需求,并且产生证书请求。 

    genrsa:产生一个任意大小的RSA 私钥。 

    genrsa:产生了一组Diffie-Hellman参数。 

    ca:从PKCS#10 证书请求产生一个证书,该程序同时维护着所颁发的证书的数据库。 

    verify:检测x509证书的签名
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值