我的一个朋友问我,为什么我们为SSL证书支付这么多,如果理论上每个人都可以发一个.为什么呢?我们如何判断浏览器中的小锁是否真的值得信赖?
证书由称为证书颁发机构(CA)的内容加密签名,并且每个浏览器都有一个它隐含信任的CA列表.这些CA是具有一组加密密钥的实体,可用于签署任何证书,通常是收费的.由受信任列表中的CA签名的任何证书都会锁定浏览器,因为它已被证明是"受信任的"并且属于该域.
您可以对证书进行自签名,但浏览器会通过在允许您进入之前显示一个大错误框或显示损坏的锁定图标来警告您签名者不受信任.
此外,即使是受信任的证书,如果它用于错误的域,也会产生错误,或者被修改为包含其他域.这是可靠的,因为证书包括允许用于的域,并且还具有确保其完整性的加密校验和/指纹.
目前这不是100%安全,因为有可能伪造使用MD5的CA证书,请参阅此链接:http://www.phreedom.org/research/rogue-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服务器之间创建一个信任链.