证书中含有RSA非对称加密算法的公钥,是对外公开的;而对应的私钥不公开。
证书主体所有者递交证书主体内容给上级证书颁发机构。
颁发机构会先用一种哈希算法提取该申领证书内容摘要信息串,再用自己的证书里公钥所对应的私钥给该摘要信息串进行加密生成签名串,最后该申领证书主体内容连同签名算法和最后签名串一起被合成最后的证书,当然,最终生成的证书中还包括上级颁发机构证书,甚至上上级颁发机构证书……
因此,签名算法实际上包含哈希算法和非对称加密算法,如图中sha1RSA,sha1是一种哈希算法,RSA是一种非对称加密算法。
而图中的签名哈希算法sha1就是签名算法中的前部分,即哈希算法。
客户端访问TLS服务端的握手过程中,服务端向客户端发送数字证书,客户端收到证书后,先用证书里的上级证书的公钥解密证书里的签名串得到证书摘要信息,然后根据证书里的指定的哈希算法也对证书主体内容提取摘要信息,两个摘要信息相同则说明证书是全法的。那么显然,要先保证上级证书是合法的。客户端会沿着证书链一级级往上,找到根证书,如果根证书在系统中是受信任的,那么它就能用来验证下一级证书的合法性。