https之数字证书分析
创始人
2024-05-24 05:09:07
0

写在前面

当我们要给网站配置https时,都需要申请 一个数字证书,然后将数字证书配置在网站上,如下可能配置:


本文就一起来看下,这个数字证书到底是什么?为什么必须要配置数字证书?

1:正戏

Bob和Alice是好朋友,Eve是一个坏人,总是要想方设法破坏Bob和Alice的友谊,假定Bob想要约Alice出去玩,于是给Alice发送了如下消息:

在这里插入图片描述

但,我们知道,可恶的Eve出手了,从中做鬼,他拦截了Bob发送给Alice的消息,并进行了恶意修改,如下:

在这里插入图片描述

这样Alice收到了错误的消息,最终在错误的时间去到了错误的地点来等待他的好朋友Bob赴约,但,很明显,Alice是等不到Bob的。这很可能会影响到Bob和Alice的友好关系,那么能不能不让这种情况发生呢,是可以的,需要注意这种情况的原因是发送的消息是明文的,坏蛋Eve可以很轻松的拦截到并修改,因此,我们只需要发送加密消息就可以了,这里我们先使用对称加密,Bob将自己的公钥发送给Alice,这样Bob再发送消息的话就可以使用秘钥加密,然后Alice使用秘钥解密了,如下图:

在这里插入图片描述

看起来非常的完美,但真的是这样吗?很明显不是,我们要考虑这个对称加密的秘钥也是通过明文发送给Alice的,因此,这个过程很有可能被坏蛋Eve截获,Eve一旦有了秘钥就又能够堂而皇之的冒充Bob给Alice发送消息了,如下图:

在这里插入图片描述

可想而知,当Alice收到这个你是个大坏蛋,我不要和你玩!的消息就要伤心死了,为了不让Alice伤心,我们需要继续升级。出现这个问题的原因是,Alice无法识别这个消息到底是不是Bob发的,那么只要能够让Alice有办法证明自己的身份就行了,这时候就需要我们的非对称加密算法了,Bob生成非对称加密的私钥(Bob独有)和公钥(公开的),然后将公钥发送给Alice,之后在发送消息的时候,Bob使用自己的私钥对消息内容进行加密生成加密数据(这个加密数据就是数字签名,唯一证明,可以对比人类的指纹或者公章),如果中途Eve搞鬼,则Alice将无法正常解密数据(如RSA公钥解密错误密文会抛出异常javax.crypto.BadPaddingException: Decryption error),这样Alice就知道这不是Bob了,如下图:

在这里插入图片描述

到这里是不是就没有问题了呢,其实还是有的,问题依然出现在Bob明文传输自己生成的公钥上,此时,如果Eve足够聪明,会截获,然后将自己生成的公钥发送给Alice(这时候就可以使用自己的私钥来发送消息给Alice了),这样的话,因为Alice无法对Bob的消息验签,Bob反而不是Bob了,而不是Bob的Alice反而成了Bob了,那我们只要对公钥也加密传输不就完了吗?但要传输这个加密公钥就需要Alice现有这个加密公钥,不然解不了密(验签需要公钥),而Alice要有这个加密公钥就需要加密传输,如下图:

在这里插入图片描述

完蛋,死循环了,这种证明你妈是你妈的问题还真是不太好搞的,此时该怎么办,破局的方式就是引入一个可靠的第三方,有它来提供可靠的公钥和私钥,利用此公钥和私钥,来完成Bob的公钥传输给Alice的工作,则死循环变为下图:

在这里插入图片描述

这里的三方就是CA(Certificate Authority)机构,公钥和私钥是以文件的形式发放的,这个文件就叫做数字证书,如下我们可以查看百度的公钥数字证书:

在这里插入图片描述

这个时候,Bob就可以用自己的私钥来加密消息,生成签名并给Bob传递消息了,但还有一个问题需要解决,那就是这个私钥加密的过程会涉及到复杂的计算过程,如果是Bob发送给Alice的消息很大的话,加密的效率可能会比较低,为了解决这个问题,需要将消息转换为一个较小长度的字符串(如MD5生成长度固定为218bit的字符串),然后再对该字符串加密生成加密消息,即数字签名,如下图:

在这里插入图片描述

其中这个经过原始消息转换而成的固定长度的字符串我们叫做是摘要,除了生成数字签名之外,一般还会用来验证文件的完整性。

写在后面

小结

本文以明文传输为切入点,通过引入不同的问题,逐步介绍了,对称加密,非对称加密,摘要,数字签名,数字证书等内容。希望本文能够帮助到你。

参考文章列表

数字签名、数字证书与HTTPS是什么关系? 。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
ChatGPT 怎么用最新详细... ChatGPT 以其强大的信息整合和对话能力惊艳了全球,在自然语言处理上面表现出了惊人...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...