- 在前面的文章我们介绍了HTTPS数据是如何进行加密和解密的,但是还余留下一个问题,就是数据发送端与接收端如何获取对方的公钥,那么就是本片文章的内容
- F:代表发送端/接收端的公钥,组织,地址等信息
- E:是对F进行单向加密后得到的数字签名,然后用自己的公钥对其加密,传输给发送端/接收端,拿着这个证书颁发机构的公钥的发送端/接收端如果能对这个证书进行解密,说明这个证书颁发机构不是冒充的(这些证书颁发机构的公钥一般已经被microsoft事先放在Windows里面,当然其他操作系统也是一样的)
-
G:表示颁发给发送端/接收端的证书
一、证书
证书的分类:
- 根证书:一般是大型公司使用,是通过证书颁发机构申请过的
- 自建根证书:没有向证书颁发机构申请,自己设计的
常用的证书协议:
x509v3:IETF的证书标准
x.500:目录的标准
SCEP:简单证书申请协议,用http来进行申请,数据有PKCS#7封装,数据其实格式也是PKCS#10的
PKCS#7:是封装数据的标准,可以放置证书和一些请求信息
PKCS#10:用于离线证书申请的证书申请的数据格式,注意数据包是使用PKCS#7封装这个数据
PKCS#12:用于一个单一文件中交换公共和私有对象,就是公钥,私钥和证书,这些信息进行打包,加密放在存储目录中,CISCO放在NVRAM中,用户可以导出,以防证书服务器挂掉可以进行相应恢复。思科是.p12,微软是.pfx
证书与公钥的交互过程:
- 客户端提前拥有服务端的证书,所以客户端有服务端的公钥
- 服务端没有提前没有客户端的证书,所以没有客户端的公钥,在SSL全流程握手的时候,服务端会向客户端索要证书
二、公钥、私钥
- 公钥:在证书中提供,所有人都知道
- 私钥:由随机数、Key值、公钥生成,只有自己知道
三、相关后缀名
-
.key格式:私有的**
-
.crt格式:证书文件,certificate的缩写
-
.csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写
-
.crl格式:证书吊销列表,Certificate Revocation List的缩写
-
.pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式