SSL证书如何验证?

mlmc2os5  于 2023-08-06  发布在  其他
关注(0)|答案(6)|浏览(151)

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

  • 这到底是怎么做到的?
  • 这个过程是如何使它免受中间人攻击的呢?
  • 是什么阻止了一些随机的人建立他们自己的验证服务来用于中间人攻击,所以一切都“看起来”安全?
kdfy810k

kdfy810k1#

下面是一个非常简单的解释:

  1. Web浏览器下载Web服务器的证书,其中包含Web服务器的公钥。此证书使用受信任的证书颁发机构的私钥签名。
    1.您的Web浏览器安装了所有主要证书颁发机构的公钥。它使用此公钥来验证Web服务器的证书是否确实由受信任的证书颁发机构签名。
    1.证书包含Web服务器的域名和/或IP地址。您的Web浏览器与证书颁发机构确认证书中列出的地址是它具有打开连接的地址。
    1.浏览器和服务器计算用于实际数据加密的共享对称密钥。由于服务器身份被验证,客户端可以确定,该“密钥交换”是与正确的服务器而不是中间攻击者中的某个人完成的。
    请注意,证书颁发机构(CA)对于防止中间人攻击至关重要。但是,即使是未签名的证书也会阻止某人被动侦听您的加密流量,因为他们无法访问您的共享对称密钥。
axr492tv

axr492tv2#

你说过的
浏览器从该证书中获取证书的颁发者信息,然后使用该信息来联系颁发者,并以某种方式比较证书的有效性。
客户端不需要与发行者进行检查,因为有两件事:
1.所有浏览器都有一个预先安装的所有主要CA公钥的列表
1.对证书进行签名,并且签名本身足以证明证书是有效的,因为客户端可以自己确保该证书是真实的,而不需要联系发布者的服务器。这就是非对称加密的妙处。
注意2。不能没有1。
这是更好地解释了这个big diagram我做了一段时间前
(skip“什么是签名””在底部)


的数据

dxxyhpgq

dxxyhpgq3#

值得注意的是,除了购买证书(如上所述)之外,您还可以免费创建自己的证书;这被称为“自签名证书”。自签名证书和购买的证书之间的区别很简单:购买的证书已由您的浏览器已知的证书颁发机构签署。换句话说,您的浏览器可以轻松验证购买的证书的真实性。
不幸的是,这导致了一个常见的误解,即自签名证书本质上不如GoDaddy和Verisign等商业CA销售的证书安全,并且如果您使用它们,您必须接受浏览器警告/异常;不正确

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

aiazj4mn4#

我知道下面的内容很长,但它很详细,也很简单。仔细阅读,我保证你会发现这个主题并不复杂。

首先,任何人都可以创建2个密钥。一个用于加密数据,另一个用于解密数据。前者可以是私钥,后者可以是公钥,AND VICERZA。
其次,简单来说,证书颁发机构(CA)为您提供创建证书的服务。他们使用特定的值(CA的颁发者名称、您的服务器的公钥、公司名称、域等),并使用他们的SUPER DUPER ULTRA SECURE SECRET私钥对这些数据进行加密。该加密数据的结果是签名。
因此,现在CA将返回一个证书。证书基本上是一个文件,其中包含前面提到的值(CA的颁发者名称、公司名称、域、服务器的公钥等),包括签名(即后一个值的加密版本)。
说到这里,有一个非常重要的地方需要记住:您的设备/操作系统(Windows、Android等)基本上保留了所有主要/可信CA及其公钥的列表(如果您认为这些公钥用于解密证书中的签名,您是正确的!).
好了,如果你读了上面的内容,这个顺序的例子现在将是轻而易举的:

  1. Example-Company要求Example-CA为他们创建证书。
  2. Example-CA使用其超级私钥对此证书进行签名,并将该证书授予Example-Company。
    1.明天,互联网用户Bob将使用Chrome/Firefox等浏览器。以浏览到https://example-company.com。大多数(如果不是全部的话)浏览器现在都希望从服务器返回一个证书。
    1.浏览器从example-company.com获取证书。证书上说它是由Example-CA颁发的。碰巧Bob的操作系统在其可信CA列表中已经有了Example-CA,因此浏览器获得了Example-CA的公钥。请记住:这一切都发生在Bob的计算机/移动的/等上,而不是通过电线。
    1.因此,现在浏览器将解密证书中的签名。最后,浏览器将解密的值与证书本身的内容进行比较。如果内容匹配,则表示签名有效!
    为什么?想一想,只有这个公钥才能解密签名,使内容看起来像私钥加密之前一样。
    中间人攻击怎么样?
    这是创建上述标准的主要原因之一(如果不是主要原因的话)。
    假设黑客Jane截获了Internet用户Bob的请求,并使用她自己的证书进行了回复。但是,hacker-Jane仍然非常谨慎地在证书中声明颁发者是Example-CA。最后,黑客Jane记得,她必须在证书上包括签名。但是Jane使用什么密钥来签名(即创建证书的加密值(主要内容)证书?????
    所以即使黑客简用她自己的密钥签署了证书,你也知道接下来会发生什么。浏览器会说:“好的,此证书由Example-CA颁发,让我们使用Example-CA的公钥解密签名”。解密后,浏览器会注意到证书内容根本不匹配。因此,浏览器会向用户发出非常明确的警告,并表示不信任该连接。
0pizxfdo

0pizxfdo5#

客户端具有SSL证书颁发机构的公钥的预种子存储。为了使服务器受到信任,必须存在从服务器的证书向上通过中间机构直到所谓的“根”证书之一的信任链。
您可以检查和/或更改受信任授权机构的列表。通常你这样做是为了添加一个你知道你信任的地方当局的证书-比如你工作的公司或你就读的学校或其他什么。
根据您使用的客户端,系统初始预设列表可能会有所不同。大型SSL证书供应商确保他们的根证书在所有主要浏览器中($)。
除非攻击者拥有可信根证书的私钥,否则中间猴子攻击是“不可能的”。由于相应的证书被广泛部署,因此这种私钥的暴露将对电子商务的安全性产生严重影响。正因为如此,这些私钥是非常,非常严密的保护。

w8f9ii69

w8f9ii696#

如果你更有技术头脑,这个网站可能是你想要的:http://www.zytrax.com/tech/survival/ssl.html
警告:兔子洞很深:)。

相关问题