数字证书到底是干嘛的?
在回答这个问题之前,先来回顾一下在现实生活中如何证明你就是你?
身份证可以证明你自己吗?在一定程度上可以,如果这个世界上有人和你长得非常相似(肉眼辨别不出),盗窃你合法身份证,完全可以蒙混过关,那么你就被假冒了,所以单纯依靠肉眼的识别是有风险的。
唯一性
但是人类的指纹、瞳孔、DNA却是唯一的,换句话说,这个世界没有两个人这些生物信息是完全匹配的,基于这个事实,如果在身份证的芯片里写入持有人的指纹信息,且无法更改(写保护),那么当持有人出示身份证时,同时验证指纹信息,当存储的指纹与采样的指纹完全匹配时,认证通过,你就是你!
RSA算法(公钥算法)
基于RSA算法的数字证书,权威的CA公司,利用RSA算法,生成一对(私钥,公钥),好比公老虎、母老虎的关系,具有唯一的对应关系:
私钥加密的数据,公钥可以解密;
公钥加密的数据,私钥可以解密;
私钥只有CA公司知道,其他任何人、任何机构都不会知道,如果你拥有该CA公司的合法公钥,并且你能够解密对方的数据,很显然对方是使用CA私钥加密的,既然只有CA公司唯一知道私钥,那么对方就是CA公司无疑,只有真正读懂了这段话,才能继续看。
数字证书
CA公司的公钥以何种格式分发给每台电脑呢?
用自签名的方式,生成数字证书,一般格式:
谁是签发者:自己喽
公钥:1024/2048位公钥(明文)
有效期:xx
哈希算法:将公钥生成哈希
加密算法:将哈希用私钥加密,生成指纹
指纹:见上
又是如何安全可靠的分发出去的?
Windows操作系统预装
当你拿到一台崭新的电脑时,其实已经拥有了各大权威CA公司的自签名数字证书,也称为根证书,我一般称为公钥,因为只有公钥是真正干活的!
当你访问某台HTTPS服务器时,TLS连接过程中,对方出示了某CA公司的数字证书链,先从根证书开始层层校验,由于你已经拥有CA的公钥,可以解密对方指纹,你可以认证对方是真正的CA,既然CA合法,CA签发的第三方也是合法的,进而完成认证,完成TLS协商。
所以题主所说的加密,只是指纹,而不是公钥。