对于自签名证书,完成自签名后,我们会获得如下的几个文件: CA 证书文件,CA证书的私钥,个人证书的私钥,获得CA签名的个人证书 ,证书请求文件(.csr) 通常证书请求文件在 获得签名后就没什么用处了;所以重要的是上面的两个证书以及两个私钥.
验证服务器端是可靠的,常用的https 其实就是验证server 不是冒牌的,这种情况下: server 端保存了 CA证书以及对应的私钥, 通信过程是这样的: 客户端发送请求要求服务证书,服务端会发送其证书给客户端(这里就是CA证书),客户端收到后,会进行证书的验证:通过CA证书中包含的public key, 计算概要信息的hash值,然后把这个概要信息 的hash值和 证书中的hash值比对,从而验证证书是否被篡改. 还需要验证证书机构签发机构是否可信任; (这种情况下,服务端需要配置证书以及对应的key,而客户端则需要trust 服务端的证书)
客户端用证书作为自己的identity , 从而获得服务器的授权,其通信过程是这样的: 客户端发送证书信息给服务端,其包含了证书的概要以及hash, 这个hash 是客户端用私钥加密的,服务端收到证书后,用自己的公钥来验证客户端证书的完整性,验证通过,那么就认证通过,否则认证无法通过. (这种情况下,客户端需要有一个证书以及对应的私钥,而服务端需要一个证书,特殊的是: 服务端证书的公钥必须和客户端的私钥配对,一般情况下证书都只是包含公钥,不含私钥,但是在这个情景下,客户端的证书是必须包含私钥的,所以通常是 客户端证书 和客户端的 私钥 结合起来的一个证书文件, 而服务端的证书则是客户端的没有包含私钥的那个证书文件,也就是说: 客户端证书比服务端证书的内容多了一个私钥而已)