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