ssl证书如何验证?

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

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

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

  • 您的Web浏览器下载Web服务器的证书,其中包含Web服务器的公钥。 此证书使用可信证书颁发机构的私钥进行签名。

  • 您的网络浏览器安装了所有主要证书颁发机构的公钥。 它使用此公钥来验证Web服务器的证书是否确实由可信证书颁发机构签署。

  • 证书包含Web服务器的域名和/或IP地址。 您的网络浏览器向证书颁发机构确认证书中列出的地址是其打开连接的地址。

  • 您的Web浏览器生成一个共享对称密钥,该密钥将用于加密此连接上的HTTP流量; 这比使用公钥/私钥加密更有效率。 您的浏览器使用Web服务器的公钥对对称密钥进行加密,然后将其发回,从而确保只有Web服务器才能解密它,因为只有Web服务器拥有其私钥。

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


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

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

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

    为了提高认知度并鼓励像我这样的小型博客保护自己,我写了一篇入门级教程,详细解释证书背后的概念以及如何安全地创建和使用自签名证书(完整的代码示例和屏幕截图)。 这是一个链接,以防将来对其他人有所帮助:http://www.clintharris.net/2009/self-signed-certificates/。


    你之前这么说

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

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

  • 所有浏览器都有预先安装的所有主要CA公钥的列表
  • 证书是签名的,并且签名本身足以证明证书是有效的,因为客户可以自己确保证书是真实的,并且不与发行人的服务器联系。 这就是非对称加密的美妙之处。
  • 请注意,2.不能没有1。

    这在我之前提出的这张大图中有更好的解释

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

    BLOB

    链接地址: http://www.djcxy.com/p/21751.html

    上一篇: How are ssl certificates verified?

    下一篇: Verify Peer in python