证书的两种形式:
1、带私钥的证书,即p12格式证书(后缀为.pfx)
2、不带私钥的证书,有多种格式,通常我们使用的是cer格式证书(后缀为.cer)
当我们安装.pfx格式证书时,windows的安装程序会为我们生成一个唯一的密钥容器(密钥容器名为GUID格式),并把证书中的私钥存储在密钥容器中,然后把脱除私钥的证书(为.cer格式证书)存放在证书库中(如果是个人证书,会默认存放在个人证书库,也就是MY系统证书库中),证书库并为证书维护一个CERT_KEY_PROV_INFO_PROP_ID属性,通过此属性可以获取存储私钥的CSP和密钥容器,所以当我们使用证书进行数字签名时,可以找到对应的CSP和密钥容器从而找到私钥进行签名。
当我们安装.cer格式证书时,一般这样的证书是别人的公钥证书(如果在安全电子邮件中,用来对邮件进行加密,其实是对对称密钥进行加密),windows安装程序会默认把证书安装在其他人证书库(也就是ADDRESSBOOK系统证书库)中,证书库不为证书维护
CERT_KEY_PROV_INFO_PROP_ID属性,所以使用此证书进行加密时,会寻找默认的CSP(CSP类型是确定的,安全电子邮件中使用
PROV_RSA_FULL类型),产生临时密钥容器导出公钥对对称密钥进行加密,加密完成后会删除临时密钥容器。