安全验证 ssl 证书所需的一系列步骤是什么?我(非常有限)的理解是,当您访问 https 站点时,服务器会向客户端(浏览器)发送证书,浏览器从该证书获取证书的颁发者信息,然后使用该信息联系颁发者,并以某种方式进行比较证书的有效性。

  • 这具体是如何完成的?
  • 该过程如何使其免受中间人攻击?
  • 是什么阻止了一些随机的人建立自己的验证服务以用于中间人攻击,因此一切“看起来”都是安全的?
有帮助吗?

解决方案

这是一个非常简单的解释:

  1. 您的 Web 浏览器下载 Web 服务器的证书,其中包含 Web 服务器的公钥。该证书是使用受信任的证书颁发机构的私钥进行签名的。

  2. 您的网络浏览器预装了所有主要证书颁发机构的公钥。它使用此公钥来验证 Web 服务器的证书确实是由受信任的证书颁发机构签名的。

  3. 该证书包含 Web 服务器的域名和/或 IP 地址。您的 Web 浏览器向证书颁发机构确认证书中列出的地址是其具有开放连接的地址。

  4. 您的 Web 浏览器会生成一个共享对称密钥,该密钥将用于加密此连接上的 HTTP 流量;这比对所有内容使用公钥/私钥加密要有效得多。您的浏览器使用 Web 服务器的公钥加密对称密钥,然后将其发送回来,从而确保只有 Web 服务器可以解密它,因为只有 Web 服务器拥有其私钥。

请注意,证书颁发机构 (CA) 对于防止中间人攻击至关重要。然而,即使是未签名的证书也会阻止某人被动监听您的加密流量,因为他们无法访问您的共享对称密钥。

其他提示

值得注意的是,除了购买证书(如上所述)之外,您还可以免费创建自己的证书;这称为“自签名证书”。自签名证书和购买证书之间的区别很简单:购买的证书已由您的浏览器已知的证书颁发机构签名。换句话说,您的浏览器可以轻松验证所购买证书的真实性。

不幸的是,这导致了一种常见的误解,即自签名证书本质上不如 GoDaddy 和 Verisign 等商业 CA 出售的证书安全,并且如果您使用它们,则必须忍受浏览器警告/异常; 这是不正确的.

如果您安全地分发自签名证书(或 CA 证书,如 bobince 建议的那样)并将其安装在将使用您的站点的浏览器中, ,它与购买的一样安全,并且不易受到中间人攻击和证书伪造。显然,这意味着只有少数人需要安全访问您的网站(例如内部应用程序、个人博客等)时才可行。

为了提高认识并鼓励像我这样的小型博主保护自己,我编写了一个入门级教程,更详细地解释了证书背后的概念以及如何安全地创建和使用自签名证书(包含代码示例和屏幕截图)。

你之前这么说

浏览器从中获取证书的颁发者信息 证书,然后使用它来联系颁发者,并以某种方式 比较证书的有效性。

客户不必与发行人核实,因为有两件事:

  1. 所有浏览器都预装了所有主要 CA 公钥的列表
  2. 证书已签名,并且该签名本身足以证明该证书有效,因为客户端可以自行确定该证书是真实的,而无需联系颁发者的服务器。这就是非对称加密的美妙之处。

请注意 2.没有1就无法完成。

这在this中得到了更好的解释 大图 我前段时间做了

(跳到底部的“什么是签名?”)

blob

客户端具有 SSL 证书颁发机构公钥的预种子存储。为了使服务器受到信任,必须存在从服务器证书到中间机构直至所谓的“根”证书之一的信任链。

您可以检查和/或更改受信任的机构列表。通常,您这样做是为了添加您信任的地方当局的证书 - 例如您工作的公司或您就读的学校等等。

预播种列表可能会根据您使用的客户端而有所不同。大型 SSL 证书供应商确保他们的根证书位于所有主要浏览器中 ($$$)。

除非攻击者拥有受信任的根证书的私钥,否则中间猴子攻击是“不可能的”。由于相应的证书被广泛部署,这种私钥的暴露将对电子商务的安全产生严重影响。因此,这些私钥受到非常非常严格的保护。

如果您更注重技术,那么这个网站可能就是您想要的: http://www.zytrax.com/tech/survival/ssl.html

警告:兔子洞很深:)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top