简单总结就是:

  1. CA自己生成自己的一对密钥(私钥和证书)

  2. 服务器自己生成私钥,然后用私钥生成CSR

  3. 客户端自己生成私钥,然后用私钥生成CSR

  4. CA用自己的私钥为服务器和客户端的CSR签名,生成它们的证书

最终文件分配:

  • CA拥有:ca.key(私钥)和ca.crt(证书)

  • 服务器拥有:server.key(私钥)和server.crt(CA签名的证书)

  • 客户端拥有:client.key(私钥)和client.crt(CA签名的证书)

验证过程:

  1. 服务器用ca.crt验证客户端的client.crt是否由信任的CA签名

  2. 客户端用ca.crt验证服务器的server.crt是否由信任的CA签名

这就像是:

  1. CA是公证处

  2. 服务器和客户端各自生成自己的身份证申请材料(CSR)

  3. 公证处(CA)给他们盖章确认(签名),生成正式身份证(证书)

  4. 双方见面时,都用公证处的公章(ca.crt)验证对方的身份证是否是真的