访问ssl加密的https协议网站,为什么有的显示公司名,有的不显示?

安全程度不一样导致的。





HTTPS连接在启动时需要获得公司的证书信息,以验证网站和运营公司的合法性。两种证书的区别在于带绿色公司名情况下,网站使用的其实是一种叫做Extended Verification Certificate(以下称为EV)的特殊类型证书。它和标准证书的主要区别是添加了Certificate Policies 扩展。这个扩展主要包括如下几个属性:

Certificate Policies, OID = 2.5.29.32,启动扩展验证。

User Notice:这里会给出一个ASN.1编码的网站和运营公司的身份信息。注意:这个属性可以不存在。

CPS URI:指向一个包含该公司合法性验证信息的链接。

需要注意的是,浏览器不一定保证对每个启动EV的网站都使用绿色公司名标示符。比如https://bitbucket.org,主页上就显示公司名,而登录后则不显示,但实际上通过比对证书指纹(fingerprint),两者应该是用的同一份证书。具体的原因尚不清楚。另外,老版本的浏览器也可能不支持这个扩展。





无论是不是使用EV扩展,证书的Subject Name都可以为空。即使是不使用EV的证书,它也可以用来验证网站的合法性。验证的方法主要是比对网站的DNS全名和Common Name或者Subject Alternative Name是否匹配。这种简单比对的安全性基础是通过证书颁发机构(CA)保证的,即CA签发证书时就需要确认证书提交人确实拥有指定的网站。证书提交人如果为别人拥有的网站提交证书申请而CA还颁发了,那么这个CA本身就是有问题的。





EV本身和加密强度倒确实无关。它取决于公钥的长度。





至于为什么不是每个网站都使用EV,主要原因是两个:

带EV的证书比较贵。因为证书签发机构在发放这种证书之前需要检查该网站和运营公司的合法性,带EV的需要提交更多的证明材料,成本比较高。

带EV的证书不能使用通配符。Wikipedia提到了这一句但不曾解释原因。我的理解是因为此类证书绑定的User Notice需要同时绑定公司和DNS名导致的。这使得EV证书不能用于分布式系统。因为分布式系统中每个节点在互联网上的机器DNS名都可能不一样。

对比:https://bitbucket.org,和 https://www.google.com。用Chrome的同学对比一下就知道。



 

发表评论

您的电子邮箱地址不会被公开。