ssl证书如何validation?
安全validationssl证书所需的一系列步骤是什么? 我(非常有限)的理解是,当你访问https站点时,服务器向客户端(浏览器)发送一个证书,浏览器从该证书获取证书的颁发者信息,然后用它来联系发布者,证书的有效性。
- 这到底如何?
- 那么这个过程如何使它免于中间人攻击呢?
- 什么阻止了一些随机的人build立他们自己的validation服务来使用中间人攻击,所以一切看上去都是安全的?
这是一个非常简单的解释:
-
您的Web浏览器下载包含Web服务器公钥的Web服务器证书。 此证书使用可信证书颁发机构的私钥进行签名。
-
您的Web浏览器安装了所有主要证书颁发机构的公钥。 它使用这个公钥来validationWeb服务器的证书确实是由可信authentication中心签名的。
-
证书包含Web服务器的域名和/或IP地址。 您的networking浏览器向证书颁发机构确authentication书中列出的地址是开放连接的地址。
-
您的Web浏览器会生成一个共享对称密钥,用于encryption此连接上的HTTPstream量; 这比使用公钥/私钥encryption更有效率。 您的浏览器使用Web服务器的公钥对对称密钥进行encryption,然后将其发送回来,从而确保只有Web服务器才可以对其进行解密,因为只有Web服务器具有其私钥。
请注意,证书颁发机构(CA)对于防止中间人攻击至关重要。 但是,即使未签名的证书也会阻止某人被动地收听您的encryptionstream量,因为他们无法访问您的共享对称密钥。
值得注意的是,除了购买证书(如上所述)之外,您还可以免费创build自己的证书; 这被称为“自签名证书”。 自签名证书与购买的证书之间的区别很简单:购买的证书已由您的浏览器已知的证书颁发机构签名。 换句话说,您的浏览器可以轻松validation购买的证书的真实性。
不幸的是,这导致了一个普遍的误解,认为自签名证书本质上比由GoDaddy和Verisign这样的商业CA出售的证书的安全性要低,如果你使用它们,你必须忍受浏览器的警告/exception; 这是不正确的 。
如果您安全地分发自签名证书(或CA证书,按照bobince的build议)并将其安装在将使用您的网站的浏览器中,则它与购买的安全性一样安全,并且不容易受到中间人攻击和证书伪造。 显然,这意味着只有less数人需要安全访问您的网站(例如,内部应用程序,个人博客等)才可行。
为了提高认识并鼓励像我这样的小型博客保护自己,我写了一个入门级的教程,更详细地解释证书背后的概念以及如何安全地创build和使用自签名证书(完整的代码示例和屏幕截图)。 这是一个链接,以防将来对其他人有所帮助: http : //www.clintharris.net/2009/self-signed-certificates/ 。
你之前这么说
浏览器从该证书获取证书的颁发者信息,然后使用该信息与发布者联系,并以某种方式比较证书的有效性。
客户不必与发行人核对,因为两件事情:
- 所有浏览器都有预先安装的所有主要CA公钥的列表
- 证书是签名的,签名本身就足以certificate证书是有效的,因为客户可以自己确定证书是真实的,而不需要联系发行者的服务器。 这就是非对称encryption的美妙之处。
请注意,2.不能没有1。
在我之前提出的这个大图中,这更好地解释了
(跳到底部的“什么是签名?”)
客户端拥有一个SSL证书颁发机构公钥的预先存储的存储区。 服务器的证书必须有一个信任链,通过中间机构直到所谓的“根”证书之一,才能使服务器可信。
您可以检查和/或更改可信机构的列表。 通常你会这样做,为你所信任的地方当局添加一个证书 – 比如你为公司工作的公司,或者你上学的学校,或者是你没有的。
预先列出的列表可以根据您使用的客户端而有所不同。 大的SSL证书供应商确保他们的根证书在所有主要的浏览器($$$)中。
除非攻击者拥有可信根证书的私钥,否则“中间人攻击”是“不可能的”。 由于相应的证书被广泛部署,这种私钥的暴露将对电子商务的安全性产生严重的影响。 正因为如此,这些私钥被非常非常严密的保护。
如果你技术上更专注,这个网站可能是你想要的: http : //www.zytrax.com/tech/survival/ssl.html
警告:兔子洞深了:)。