谁能给我解释一下:
谁在 CSR 期间创建公钥?提供它是 CA 的责任还是取决于证书申请者?如果后者为真,浏览器客户端可以通过哪种方式将此公钥包含在其信任库中以验证从服务器发送的 SSL 证书?如果前者为真,那么一个 CA 拥有多少个公钥以及所有这些 key 以何种方式为浏览器客户端所知?这是我无法找到或给出满意答案的一点,因为我无法想象客户端拥有一个包含大量公钥的数据库......
非常感谢
最佳答案
公钥和私钥只能成对生成。由于 CA 不应该知道私钥,因此请求者必须自己生成该对。
虽然浏览器必须存储每个值得信赖的 CA 的公钥,但它不必在其信任库中包含每个支持 https 的网站(如
prettykittens.org
)的公钥。
那么客户端如何判断网站的真实性呢?
在 SSL 握手期间,网络服务器发送其公钥和一条使用 CA 公钥签名的消息,该消息大致表示“这是 XY 公司用于 prettykittens.org 的公钥”(也称为证书)。然后浏览器只需使用 CA 的公钥验证签名就可以了。
关于SSL证书和公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33435310/