post

如何保证HTTPS(SSL加密)网站的安全性?

电脑在与服务器交换敏感信息时会使用一种叫做SSL的加密方式,在很多情况下,交换敏感信息必须要通过这个方式来进行,包括12306在内,京东、淘宝、支付宝等在交换敏感信息的时候都使用了SSL进行加密。在Chrome浏览器中无法访问12306的购票页面,就是因为购票页面访问https://dynamic.12306.cn/otsweb的网址,而12306的SSL证书并不是国际认可的正规CA的证书,需要手动安装12306提供的根证书才可以,实际上是自欺欺人,看完这篇文章,你就明白了。

一、SSL加密

那么,我们怎么知道网站是否使用了SSL加密呢?最简单的办法就是看看地址栏:如果网址前面写的是“https://”,那么这个页面就是使用SSL加密的,这意味着你访问的页面是安全的并且可以用来交换敏感信息。如果你使用的是Internet Explorer 7或者以上版本浏览器,你应该能在浏览器地址栏的最右边看到一把小锁头,就像下图所示的那样,点开这把小锁头,就能看到关于https的信息。

https的信息

用其他浏览器呢?现在流行的浏览器中,全部都会标示出来该网页是使用了https以防止窃听和用户的个人信息安全的。比如下边的图就是在Firefox中使用https浏览维基百科的画面。

https的信息

二、CA与SSL证书

但是,谁又能保证https的安全呢?这里就又是一个概念:数字证书认证机构。它的译名很多,不过大致意思对就可以了,英文Certificate Authority,经常被缩写为CA。下文中也使用“CA”来称呼数字证书认证机构。

CA是一个机构——打个比方,这就像是信用卡一样。一个人向银行申请信用卡,就像网站向CA申请证书,CA觉得网站的信用合格,就签发SSL证书;银行觉得申请者的信用合格,就签发信用卡。等等,什么又是“SSL证书”呢?这就是CA签发给网站用以证明网站身份的“信用卡”。有了SSL证书,加密网页才能被信任。当你在访问一个被https加密的网页时,网页会出示一份证书,这份证书有助于用户信任这个网站,没有正规CA签发的证书的网站是不会受到浏览器的信任的,就算你用了SSL来加密也没用。

再看看前面的两张图片:
第一章支付宝的截图中:CA就是:VeriSign Class 3 Public Primary Certification Authority – G5
第二章维基百科的截图中:CA是:DigiCert Inc

三、根证书库

浏览器又上哪知道CA是正规的呢?那就是根证书库,这是一个操作系统认为可以被信任的CA的名单。几乎每个能上网操作系统(甚至包括诺基亚最弱智的S40系统)都有一个。在这里用Mac做示例,Mac的根证书库在:Finder-应用程序-其他(提示:OS X Lion或者以下操作系统叫“实用工具”)-钥匙串访问,然后在最左边找“系统根证书”,点进去便是,看到的应该如下图所示:

OSX系统根证书

可以试着找一下VeriSign Class 3 Public Primary Certification Authority – G5—–,肯定能找到!每次浏览器浏览https网页时,都会把网站出示的证书在这个库里面找一圈,能找到就OK,找不到的话,就证明你这个CA是不可靠的!

四、签发证书

SSL加密的目的除了保证用户信息在传输过程中的安全外,还保障了服务器的身份。有些简单的SSL证书仅仅需要用该网站域名的邮箱向CA发封邮件就能签发了,不过如果是一个组织、团体、基金会或者盈利性机构(尤其是类似于支付宝或者PayPal的网络支付服务),那么SSL证书的签发就会变得十分繁琐,网站需要提供大量的文件以证明该网站是可靠的,如果能够证明该网站是可靠的,CA才会给签发证书。

五、EV SSL证书

还有一种证书被称作EV SSL证书(Extended Validation SSL),这种证书遵循全球统一的严格身份验证标准颁发的SSL证书,是目前业界最高安全级别的SSL证书。这种证书显示起来,就是俗称的绿色地址栏证书。在IE 7和以上IE浏览器便会出现绿色地址栏,并且滚动展示该网站的信息和CA信息。如下图所示:

EV SSL证书

EV SSL的申请手续更复杂,申请费用也更多,但是可以换来更多用户的信任。左图是Firefox下显示EV SSL证书的样子,这个证书证明了这个网站的经营者为Wikimedia Foundation, Inc.,并且位置位于San Francisco California, US

据一个叫做VeriSign的CA的统计,使用EV SSL能大幅提升用户对于网站的信任。

VeriSign的CA

总而言之,SSL证书的目的有两个:

  • 确保网站和用户之间的数据是加密并且可靠的
  • 确保网站所宣称身份的真实可靠

六、关于12306需要安装根证书

如果访问12306.cn会出现什么情况呢?12306的确使用了SSL来加密以保障网页的安全,而访问直接访问12306就算不安装根证书也不会出现任何问题。以Chrome为例,访问主页不会出现任何问题,但是若要访问购票页面就会无法访问,如果我们点击“仍然继续”,就会正常的看到购票页面没有任何阻力。IE8也是一样,不过IE8的地址栏整个都会变成红色的。

如果我们点击旁边的小锁头来查看关于这个证书的信息呢?再点击“证书信息”,会看到这个12306的证书是一个叫做SRCA的CA签发的,但是在“钥匙串访问”里面根本没有一个叫做SRCA的CA。如果安装上了首页给出的“根证书”,(依然以Mac为例)钥匙串访问里面就会有一个叫做“SRCA”的CA!并且本来这个证书是不受信任的,安装之后就会被设置为“此证书已被标记为受此账户信任”。这样的话,浏览器和操作系统就会信任这个证书,便不会给予CA信息不对的提示了。

什么是“SRCA”?“SRCA”是Sinorail Certification Authority的缩写,Sinorail是“中铁信息工程集团”的网址名称,换句话说,就是自己给自己发证书。

正规CA的证书可不是白给的,要不然CA靠什么吃饭?一个SSL证书从每年三百块RMB到一万五不等。据我所知,最贵的证书是VeriSign签发的,一万五的那个就是他,而便宜的三百块证书,只要不是VeriSign,其他CA签出来的最便宜的证书差不多都这个价,比较便宜的代表是GoDaddy、Comodo等。

从前有个倒霉的的荷兰CA,叫DigiNotar。这CA被黑客攻破,导致这家CA办法给一些用户的证书的私钥失效(私钥是在SSL加密环节中非常重要的东西),这就使得以这家CA的名义伪造证书成了可能。黑客可以通过这家公司的名义伪造证书给一些非法网站,客户一看这是加密过的还是大型CA签出来的证书便很容易信任。因为DigiNotar名气很大,并且很多大公司都使用它的证书,微软等操作系统厂商在这事情发生之后开始忙不迭的发布更新补丁来宣布DigiNotar的证书失效。

这家倒霉公司最后因为这件事华丽丽的破产了。

七、证书吊销列表CRL

那么小CA的私钥失窃之后会有什么不就措施呢?那就是证书吊销列表,英文全称Certificate revocation list,简称CRL,下文也称呼它为CRL。

CRL是干什么的呢?比如你买的证书被盗了,只要将信息报告给CA,那么CA就会把你这个证书的信息添加到这个CA的CRL中,每次浏览器浏览加密网页时,都会检索CRL信息,如果没有的话,就会提示该站点安全证书的吊销信息不可用,是否继续。想必读到这里大家也都知道了,12306的证书没有CRL信息,这也就意味着,12306所使用的证书一旦失窃,系统厂商不会管这个,甚至连最后一根救命稻草CRL都没有。

简而言之,如果证书出了事,两种解决办法:

  1. 1、系统厂商发补丁宣布该证书失效
  2. 2、通过CRL宣布证书失效

不过可惜的是12306出了事,这两招哪一个都不顶用,这就意味着遭殃的一定是用户。证书失窃,任何人都能用此来伪造虚假证书。违法网站只要获得了SRCA颁发的证书,岂不就能轻易骗得用户的信任?如何访问https://www.12306.cn没有任何障碍,可以将SRCA的证书设为不信任。

从证书的角度看,中国很多大佬都做的非常不到位。比如我手里的建行网银,在安装U盾的时候必须安装一个网银根证书。SSL证书方面中国也做的很不到位。比如京东只有在用户登陆的时候才用了SSL来加密,而京东甚至在下订单的时候依然是明文传输。新浪微博在更改个人敏感信息时仍然使用明文传输,而twitter在早期甚至连微博内容都用https。如果使用不加密的公共Wi-Fi的话,那么在同一个Wi-Fi热点下有一个黑客,黑客便可以非常轻松的窃取到你的个人信息。

现在12306在付款的过程中使用了VeriSign签发的合格的证书,但是这样并不代表着上面所说的可能造成的严重影响不会发生。

EV SSL介绍:http://www.wosign.com/EVSSL/index.htm

这个地址打开后便可以看到EV SSL的效果:https://www.evssl.cn/en/

HTTPS – 维基百科https://zh.wikipedia.org/wiki/Https

完整内容请访问原文:techyan

Speak Your Mind

*

· 474 次浏览