W.I.P 简介互联网证书体系
这里假定诸位至少了解公私钥加密相关知识qwq (咱的GPG相关文章也有介绍的说!)
众所周知,公私钥体系中存在一个问题,如何确定一个公钥确实属于它所申明的那个实体(人,组织,公司)呢?
在GPG中,咱们根据密钥串中其他实体的签名来判断该密钥是否值得信任,
在爱好者之间也有通过线下见面会来签名密钥的存在
但这在互联网中显然不现实,由此,证书体系出现:
CA
)这些机构会负责确认一个证书签发请求(CSR)是否真的来自于它所申明的实体
例如,如果需要给一个域名签发证书,则通常需要该域名所有者设置特定的DNS,或在网站目录下放置特定的文件来确认所有权
CA拥有一对公私钥,并自己为自己的公钥进行签名,以生成一张自签名证书,这张证书被称为CA根证书
CA使用自己的私钥对需要签发证书的公钥进行签名,以生成一张证书。这张证书就证明了该公钥属于指定的实体,由CA保证
当然喽,CA作为证书体系的根源,它的公钥也存在这样的问题:即使咱们信任这个机构,也不能确定它的公钥是否真的属于它
于是,它们的公钥被内置在了操作系统中(windows应该有内置几十家这样的CA机构)
所以,默认情况下,系统是否信任一个CA,其实取决于操作系统的发布者
证书颁发机构签发了一张证书,那么这张证书的私钥也可以拿去签发证书,签发出来的证书的私钥也可以继续签发下一级证书。。。
那么在实际使用校验时,会根据最后签发的这张终端证书,去查找签发它的上一级证书,然后根据签发它的实体的证书再去找上一级的签发证书,直到找到的证书为自签名证书(CA证书),或者找不到上一级证书(即证书链不完整,完整的证书链始终应该以根证书结尾)
中间证书
一张证书有自己的有效期,到期后或生效期前都被认为是无效的
有些时候,例如证书的私钥泄漏,咱们会需要提前让这份证书失效,这称之为吊销
CA会维护一份列表,里面记录了所有提前被吊销的证书,客户端在校验证书时,应检查这个列表,以检查证书是否已经被吊销
目前有两种标准/方式来提供这个列表
一张证书的吊销列表位置应该包含在证书当中,如果一个证书不包含这样的字段,则应查询其父证书中包含的吊销列表地址
还有一个概念是证书颁发请求(CSR),这玩意也是一个文件,相当于需要证书的实体填写的一个申请表格,包含了例如名字,地址,要这张证书干啥之类的信息,填完了扔给证书颁发机构,机构认为没问题,就签发证书给这个实体。这玩意就是一张申请表一样的东西,和证书体系没有密切的关系,没有这张表CA也能给签出证书。