SSL证书和公钥

标签 ssl

谁能给我解释一下:

谁在 CSR 期间创建公钥?提供它是 CA 的责任还是取决于证书申请者?如果后者为真,浏览器客户端可以通过哪种方式将此公钥包含在其信任库中以验证从服务器发送的 SSL 证书?如果前者为真,那么一个 CA 拥有多少个公钥以及所有这些 key 以何种方式为浏览器客户端所知?这是我无法找到或给出满意答案的一点,因为我无法想象客户端拥有一个包含大量公钥的数据库......

非常感谢

最佳答案

  1. 公钥和私钥只能成对生成。由于 CA 不应该知道私钥,因此请求者必须自己生成该对。

  2. 虽然浏览器必须存储每个值得信赖的 CA 的公钥,但它不必在其信任库中包含每个支持 https 的网站(如 prettykittens.org)的公钥。

那么客户端如何判断网站的真实性呢?

在 SSL 握手期间,网络服务器发送其公钥和一条使用 CA 公钥签名的消息,该消息大致表示“这是 XY 公司用于 prettykittens.org 的公钥”(也称为证书)。然后浏览器只需使用 CA 的公钥验证签名就可以了。

关于SSL证书和公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33435310/

相关文章:

php - 使用 ssl 证书向 asp.net web 服务创建 SOAP php 请求不断出现 soapfault :forbidden

android - 服务器证书扩展和与 Android 的接口(interface)

java - struts2强制将https url重定向到http

python - 你如何使用带 stunnel 的 Python 套接字?

google-chrome - 如何在不触发浏览器 SSL 检查的情况下重定向 www 流量?

ssl - Azure API 管理 - Validate-JWT - 禁用证书验证

java - 执行 HTTP POST 时,远程主机在握手期间关闭连接

ssl - SSLContext.createSSLEngine() 线程安全吗?

apache - 如何将 HTTP 永久重定向到 HTTPS SSL url?

postgresql - 如何检查 PostgreSQL 安装是否支持 SSL?