我的一个朋友问我,如果理论上每个人都可以颁发 SSL 证书,为什么我们要花这么多钱购买 SSL 证书。为什么确实如此?而我们如何判断浏览器中的小锁是否真的值得信赖呢?
10 回答
证书由称为证书颁发机构 (CA) 的东西进行加密签名,每个浏览器都有一个它隐式信任的 CA 列表。这些 CA 是拥有一组加密密钥的实体,可用于签署任何证书,通常是收费的。任何由受信任列表中的 CA 签名的证书都会锁定浏览器,因为它已被证明是“受信任的”并且属于该域。
您可以对证书进行自签名,但浏览器会警告您签名者不受信任,方法是在允许您进入之前显示一个大错误框,或者显示一个损坏的锁图标。
此外,即使是受信任的证书,如果用于错误的域,或者被修改为包含另一个域,也会出错。这是确保的,因为证书包括允许使用的域,并且它还具有确保其完整性的加密校验和/指纹。
目前这不是 100% 安全的,因为有可能伪造使用 MD5 的 CA 证书,请参阅此链接:http ://www.phreedom.org/research/rogue-ca/ 。尽管必须指出这非常困难,因为他们利用了现有 CA 中的一个弱点,该 CA 现在可能已经关闭,也可能尚未关闭。
从本质上讲,我们信任证书就像我们信任我们的浏览器提供商知道如何选择“正确”的 CA 一样。这些 CA 仅凭借其声誉而受到信任,因为如果被发现,理论上一个失误将对他们的可信度造成非常沉重的打击。
整个 CA 业务令人惊叹。我从 rapidssl.com 购买了几个证书,他们需要的所有“证明”是:
- 我可以接收到域的邮件。
- 我可以接电话。
就是这样。请记住,当信任浏览器中的小锁时。
首先,SSL 所基于的强公钥/私钥密码学的一些背景知识:
密钥有两个部分,私有部分和公共部分。公钥可用于加密需要私钥解密的材料。这允许使用开放的通信通道进行安全通信。
公钥/私钥加密的一个重要方面是私钥可用于对可以使用公钥验证的消息进行数字签名。这使消息的接收者能够具体验证他们收到的消息是由发送者(密钥的持有者)发送的。
SSL 证书的关键是加密密钥本身可以进行数字签名。
“证书”由私钥/公钥对以及数字签名数据组成。当有人购买 SSL 证书时,他们会生成私钥/公钥并将公钥提交给证书颁发机构 (CA) 以进行签名。CA 对 SSL 证书的购买者执行适当级别的尽职调查,并使用他们的私钥签署证书。SSL 证书将绑定到特定网站或网站集,本质上是 CA,表明他们信任证书私钥的所有者是这些网站的正确所有者。
受信任 CA 的根证书(公钥和其他元数据)默认包含在主要的浏览器和操作系统中(在 Windows 中,在运行提示中键入“certmgr.msc”以查看证书管理器)。当您使用 SSL 连接到 Web 服务器时,服务器将向您发送其 SSL 证书,包括公钥和其他元数据,所有这些都由 CA 签名。您的浏览器能够通过签名和预加载的根证书来验证证书的有效性。这会在 CA 和您要连接的 Web 服务器之间创建一条信任链。
因为我们必须相信某人。
受信任的 SSL 证书具有受信任机构的签名。例如,VeriSign 与 Microsoft 达成协议,他们的证书内置在您的浏览器中。因此,您可以使用 VeriSign 可信证书来信任每个页面。
这张图确实抓住了重点:
- RA = 注册机构
- CA = 证书颁发机构
- VA = 验证机构
粗略:用户用他的公钥在注册机构(RA)申请证书。后者向证书颁发机构 (CA) 确认用户的身份,然后颁发证书。然后,用户可以使用他的新证书以数字方式签署合同。然后,缔约方与验证机构 (VA) 核对他的身份,该验证机构再次接收有关由认证机构颁发的证书的信息。
如果您没有使用一个被接受的 CA,人们在访问该站点时会收到一个消息框,谈论不受信任的证书。这无助于为网站带来流量。
锁定仅意味着站点所有者向 CA 出示了某种证明,证明他确实是他声称的那个人。如果您信任该人/网站,您必须自行判断。
这就像一个陌生人向您展示带照片的身份证。您是否更信任他,因为您确定他的名字是 John Doe?可能不是。
但是当你信任的人告诉你:“John Doe”是个好人。证明你面前的人实际上是“John Doe”,而不是你可能选择相信他。
为什么?因为你花钱是为了借别人的名誉……为你担保。
这一切都是关于谁验证了你的主张是你。尽管我最近看过一些纪录片,以及经济衰退,但当他们向我确认你的身份时,我仍然更有可能相信美国企业,而不是我是俄罗斯黑手党。即使两者都可以轻松颁发证书。
您支付的金额基本上只是(他们为确保声誉和/或抑制任何安全漏洞所花费的成本)+(无论他们能够承受多大的利润作为利润百分比)。
现在进入门槛相当高,因为赢得信任真的很昂贵,所以没有太多的竞争。因此,价格可能不会很快下跌......除非索尼或通用电气等公司决定参与其中。
您为证书付费,这样当您使用 HTTPS(对于任何有点敏感的事情都应该这样做)时,您的客户不会收到严重警告,并打电话给您的支持人员说您已经感染了他们……</p>
很少有安全性,很多 FUD。
如果您有可能直接向您的客户提供您自己的证书,那就去做吧。但这是一种罕见的情况。
让我们创建一个攻击场景。
假设DNS 已损坏并且https://facebook.com/指向攻击者的 IP。
你坐在你的电脑前,打开 Facebook,在无意义的滚动上浪费几分钟。然后 BANG,Certificate invalid
屏幕上显示错误。攻击者用他自己的证书签署了https://facebook.com/,以确保没有人会离开他复制的 Facebook 页面,因为它没有加密,所以看起来很可疑。如果浏览器不检查证书的权限,那么攻击者可以用他的证书签署损坏的页面,你不会知道你正在连接到错误的 IP。
所以攻击者有2个选项可供选择:
- 用他的证书签署损坏的 Facebook 页面,这样用户会看到一个错误。
- 不要在他损坏的页面上使用 https。
证书是建立在信任链上的,如果让任何人成为签名机构,我们就会隐含地信任每个人。不过今天有点吓人,因为有超过 200 个所谓的“受信任的权威机构”,它们的证书内置在您的浏览器中!
我知道有一个免费的 CA:StartCom。他们颁发免费的 SSL 证书,但它们只在 Firefox 中被接受,而不是 IE。(不确定 Safari 或 Opera)。
其他答案已经解释了 CA 系统。透视项目旨在为 SSL 部署一种新方法,您可以在其中选择信任谁:http: //perspectives-project.org/