当前位置:  开发笔记 > 编程语言 > 正文

如何验证ssl证书?

如何解决《如何验证ssl证书?》经验,为你挑选了5个好方法。

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

究竟是怎么做到的?

该过程如何使其免受中间人攻击?

是什么阻止了一些随机的人建立自己的验证服务以用于中间人攻击,所以一切"看起来"安全?

Eli Courtwri.. 268

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

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

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

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

    您的Web浏览器生成共享对称密钥,该密钥将用于加密此连接上的HTTP流量; 这比使用公钥/私钥加密更有效.您的浏览器使用Web服务器的公钥加密对称密钥,然后将其发回,从而确保只有Web服务器可以解密它,因为只有Web服务器具有其私钥.

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



1> Eli Courtwri..:

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

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

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

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

    您的Web浏览器生成共享对称密钥,该密钥将用于加密此连接上的HTTP流量; 这比使用公钥/私钥加密更有效.您的浏览器使用Web服务器的公钥加密对称密钥,然后将其发回,从而确保只有Web服务器可以解密它,因为只有Web服务器具有其私钥.

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


要使用连接到https://www.amazon.com的Firefox查看此过程的完整工作示例,请参阅http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html
我不知道我的浏览器安装了所有主要证书颁发机构的公钥.现在我知道如何在没有MITM风险的情况下验证我的SSL证书:).谢谢!
服务器需要从CAuthority请求证书,因此它向它发送请求.CA如何确定服务器是否有效?
在步骤1.5周围,服务器还使用与其证书相关联的私钥"签名"某些内容.这与名称/ IP检查相结合,以确保只有证书的拥有站点才能显示它.
@voipp:好问题!从历史上看,有一些方法,例如"从'webmaster @ '发送电子邮件或"将此文件放在您的域名上以证明您拥有它."但是,确实存在人们的问题让CA为他们不拥有的域颁发证书 - 着名的是有人设法让一个阴暗的CA为他们颁发gmail.com证书!
"您的网络浏览器安装了所有主要证书颁发机构的公钥." 谁来决定什么被认为是"主要证书颁发机构"?如果我正在使用的证书颁发机构的公钥没有预先安装在我的浏览器上,那么我的浏览器是否不能在不打开中间人攻击的情况下获取公钥?

2> Clint Harris..:

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

不幸的是,这导致了一种常见的误解,即自签名证书本身就不如GoDaddy和Verisign等商业CA销售的证书,如果你使用它们,你必须忍受浏览器警告/例外; 这是不正确的.

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

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


我喜欢这条评论 - 不幸的是,它凸显了CA的一个非常重要的弱点.假设您从Bob Smith导入CA证书 - Bob Smith可以为任何域(包括google.com和chase.com)签署证书.这实际上是为什么GoDaddy/Verisign支付大笔资金才能被纳入操作系统 - 他们会被安全机构审查,以确保他们有适当的检查以确保他们不会为恶意人员签署证书.我认为您应该可以说"此CA只能为mysite.com签署证书".

3> ychaouche..:

你之前这么说

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

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

    所有浏览器都有预先安装的所有主要CA公钥列表

    证书已签名,并且该签名本身足以证明证书是有效的,因为客户可以通过他自己的,并且无需联系发行者的服务器来确保该证书是真实的.这就是非对称加密的美妙之处.

请注意,如果没有1,则无法完成.

在我前一段时间制作的这个大图中可以更好地解释这一点

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

BLOB


这应该是公认的答案.@Eli Courtwright的答案是简短地了解证书如何运作.

4> nsayer..:

客户端有预先存储的SSL证书颁发机构的公钥.服务器的证书必须有一条信任链​​,通过中间权限直到一个所谓的"根"证书,以便服务器受信任.

您可以检查和/或更改受信任的权限列表.通常,您这样做是为您信任的地方当局添加证书 - 例如您所在的公司或您就读的学校或不参加的学校.

预播种列表可能因您使用的客户端而异.大型SSL证书供应商确保他们的根证书在所有主要浏览器中($$$).

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



5> Mike Frysing..:

如果你有更多的技术头脑,这个网站可能是你想要的:http://www.zytrax.com/tech/survival/ssl.html

警告:兔子洞深入:).

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有