数字证书

综述

数字证书,就是一个证书,是由专业的证书颁发机构来颁发的,用于确认一个数字签名的合法性

相当于每个人都去社保局备案,申请一张社保卡一样,这张社保卡中带有你的身份信息,可以标明你的身份

定义

A :张三    A1:A的公钥  A2:A的私钥

B:李四    B1:B的公钥  B2:B的私钥

sign数字签名  FS文件摘要

场景

场景:A向B发送一个100M的文件

1.A将F通过单向散列算法,输出文件摘要(FS)

2.A用A1对FS进行加密,输出(sign1)--------数字签名

3.A将F、A1、sign1打包,一并交给B

4.B得到F、A1、sign1

5.B将F通过但单向散列算法,输出文件摘要(FS2)

6.B用A1和sign1解析出文件摘要(FS3)

7.如果FS3和FS2相同,标明文件没有被篡改


问题:B怎么能确定这个文件是由A发的,而不是C盗窃了A的私钥来发的呢?

这时候需要一个第三方机构(CA)来做认证,相当于A向公安局备案

插入以下流程

1.1:A向CA提交A的信息,如A公钥、A用户名、A邮箱、A公司信息等,CA验证A的合法性,如果合法,CA用自己的私钥将A公钥、A用户名、A邮箱、A公司等信息进行加密,生成一个数字证书(Cer1),发给A

3.A将F、A1、sign1、Cer1打包,一并交给B

4.B得到F、A1、sign1、Cer1

4.1  B用CA的公钥解析Cer1,解析出A1、用户名、邮箱、公司信息等;判断用户信息和公钥是否正确,如果不正确,抛出异常

CA颁发证书是收费的,类似域名一样,按月收费

有效性如何确定呢

证书是有有效期的,去CA可以验证证书是否还有效,如果证书丢失,可以去CA挂失证书

就好比社保卡丢失之后,可以去社保中心挂失

应用场景

数字签名,比如一个应用程序的可执行文件,用以保证安装包没有被篡改

HTTPS,用以保证数据传输过程中不会被黑客拦截

比如(一个HTTPS验证过程):

1.客户端向服务器发送HTTPS请求

2.服务器用自己的私钥将网页信息加密,连同数字证书一并发送到客户端

3.客户端浏览器查看本地的“受信任的证书列表”

4.查看服务器发过来的数字证书是否在受信任的证书列表中,如果不在,提示用户:“此网站是为其他网址服务的,建议关闭”

数字证书_第1张图片

5.如果数字证书存在于受信任的证书列表中,但是数字证书中记载的域名地址和当前用户正在访问的域名地址不同,说明这个证书可能被冒用,网站会发出警告

数字证书_第2张图片

未完待续。。。

你可能感兴趣的:(数字证书)