如楼主所说,RSA是非对称加密算法,SHA是散列算法。这两种算法在这里有不同的用途: RSA算法:加密用的,主要用于HTTPS的握手阶段。出于性能考虑,客户端跟服务端实际传输数据时,并不会用RSA算法对传输的数据进行加密,而是采用对称加密。对称加密的密钥在握手阶段协商生成,RSA就是在这个过程中使用的。(细节不展开) SHA散列算法:证书防伪用。为了防止证书传输过程中,用户的公钥被篡改,证书在生成时,会将该证书对应的公钥等信息,通过SHA进行摘要运算(得到A),同时用CA的私钥进行加密,生成电子签名(得到B)。客户端拿到证书后,首先用CA的公钥解开电子签名,得到摘要A,然后利用SHA对该证书上的公钥等信息进行摘要运算(跟前面一样),得到摘要C。对比证摘要A、摘要C,如果A==C,那么证书没有被篡改过。 楼主应该比较关心的是SHA在这里的作用,如上所示。 此外,数字证书上其实带了两对 加密算法/摘要算法,一对是用来证明证书本身的合法性,一对用来证明公钥的合法性。
如楼主所说,RSA是非对称加密算法,SHA是散列算法。这两种算法在这里有不同的用途:
RSA算法:加密用的,主要用于HTTPS的握手阶段。出于性能考虑,客户端跟服务端实际传输数据时,并不会用RSA算法对传输的数据进行加密,而是采用对称加密。对称加密的密钥在握手阶段协商生成,RSA就是在这个过程中使用的。(细节不展开)
SHA散列算法:证书防伪用。为了防止证书传输过程中,用户的公钥被篡改,证书在生成时,会将该证书对应的公钥等信息,通过SHA进行摘要运算(得到A),同时用CA的私钥进行加密,生成电子签名(得到B)。客户端拿到证书后,首先用CA的公钥解开电子签名,得到摘要A,然后利用SHA对该证书上的公钥等信息进行摘要运算(跟前面一样),得到摘要C。对比证摘要A、摘要C,如果A==C,那么证书没有被篡改过。
楼主应该比较关心的是SHA在这里的作用,如上所示。
此外,数字证书上其实带了两对 加密算法/摘要算法,一对是用来证明证书本身的合法性,一对用来证明公钥的合法性。