HTTPS:04---证书与公钥、私钥

  • 在前面的文章我们介绍了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格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式