Pages

Sunday, 3 February 2013

CNNIC证书的危害及各种清除方法

最近这段时间,CNNIC不甘寂寞,又在CA领域,搞了点小动作。今天先来说一下,这个老流氓又坑蒙拐骗了哪些主?


◇Mozilla.org


  可能某些IT圈外的同学会问,Mozilla是嘛玩意?简单地说,Mozilla和Firefox的关系,就好比微软和Windows的关系。因此,Firefox自带哪些CA根证书,是由Mozilla组织决定滴。
  话说09年初那会儿,CNNIC里面的某个员工(liu_yan@cinic.cn)到Mozilla网站提交了一个申请:要求将CNNIC加入 Mozilla的CA列表。此申请经过几个月的讨论。到了09年底,审批获得通过。至此,CNNIC正式成为Mozilla的CA之一(请看“Mozilla官方的CA列表”)。懂洋文的同学,请自行到“这里”看详细的申请过程。
  因此,到Firefox下一个版本3.6发布时,其内置的诸多根证书中,将会包含CNNIC这个老流氓提供的根证书。

◇微软(Microsoft)


  说实在的,俺不清楚老流氓CNNIC是如何忽悠微软,让微软把它也加入到Windows内置的CA列表中的。不过这已经不重要了。现在,老流氓已经把它脏兮兮的触角,伸到了微软那儿。列位看官如若不信,可以去看“微软的CA列表”。
  今后,如果你安装了微软新的操作系统,多半其已经包含了CNNIC的根证书;即便你一直使用老版本的Windows,也可能在自动升级了某个Windows补丁之后,把CNNIC的根证书带到你的电脑中。

◇Entrust.net

除了Mozilla和微软,还有一个组织也被CNNIC牵连了,那就是Entrust——国外一家比较老牌的CA。正是由于该CA比较老牌,因此Windows系统(至少包括Win2000之后的版本)中以及Firefox中,都已经内置了它的根证书。
  老流氓大概是花了些银子,于是该CA提供的根证书就信任了CNNIC制作的某个SSL证书(不明白证书间是如何信任的,请回顾一下俺扫盲帖中提到的“证书信任链”)。
  到了2010年下半年,Entrust大概也意识到CNNIC的名声太臭,就解除了跟CNNIC的信任关系。所以,如今新的Entrust证书,已经 不会再信任CNNIC的SSL证书了。如果你的浏览器是新版本或者Windows系统更新过新的补丁,其内置的Entrust证书应该是安全的,不用清理 了。如果你吃不准Windows系统或浏览器内置的Entrust证书是否安全,请根据本文后续章节“★如何确认门户已经清理干净”介绍的方法判断。

★这事儿对咱有啥影响?


  那电脑中有了CNNIC的证书,会出现啥鸟事捏?俺大概说一下。

◇“中间人攻击”的风险


  中间人攻击的风险,是最危险的,也是最经常被提及滴。
  俺在前面的帖子已经讲了CA证书对于https协议的重要性(可以防止攻击者伪造虚假网站)。如果老流氓CNNIC成为合法的CA,那它就能堂而皇之地制作并发布CA证书。然后捏,再配合GFW进行DNS的域名劫持。那GFW就可以轻松搞定任何网站的HTTPS加密传输。
  可能有些小朋友心里会犯嘀咕:GFW会有这么坏吗?俺想借用鲁迅他老人家的一句话来回答:我向来是不惮以最坏的恶意,来推测党国的。GFW和CNNIC作为党国的2条走狗,一起进行中间人攻击(一个负责DNS欺骗、一个负责伪造CA证书),简直是天生一对、黄金搭档啊!

◇ActiveX控件的风险


  另外一个大伙儿不太关注的风险,是关于ActiveX控件的问题。前几年,很多恶意软件(包括流氓软件、木马)都是通过IE控件的技术,安装到大伙儿 的电脑上。后来微软加强了多ActiveX控件的验证:在IE的默认设置下,对于没有数字签名的ActiveX控件,是拒绝安装滴;而对于有数字签名的控 件,则会给出提示。
  因此,老流氓CNNIC可以很轻松地给自己的ActiveX控件制作数字证书。然后把控件放到网上。某些粗心的电脑用户看到IE跳出的安装控件提示,多半没细看,直接就点了“确定”按钮。

★如何清理门户?


  其实网上关于如何去掉证书的操作指南,多如牛毛,所以俺就简单说一下,懒得再抓图了。
  有些浏览器(IE、Chrome、Safari)使用的是操作系统的证书体系。这种情况下,你需要把CNNIC证书从操作系统的证书体系中去掉。还有 些浏览器(比如Firefox、Opera)是自己带了一套证书体系。你只要在其配置界面,把不要的证书去除即可。下面分不同的浏览器,不同的操作系统, 分别介绍。

◇清理Windows的证书(适用IE、Chrome、Safari)


  对于使用Windows下的IE或Chrome或Safari浏览器,则需要执行如下步骤:
1. 运行Windows的证书管理器(到命令行执行certmgr.msc)。
2. 选中“受信任的根证书颁发机构”=>“证书”。
3. 查看右边的证书列表。如果里面已经有CNNIC的证书,直接跳到第7步。
4. 先翻墙到“这个页面”下载现成的CNNIC证书(要解压缩出来)。
5. 鼠标在“受信任的根证书颁发机构”=>“证书”上点右键。在右键菜单中点“所有任务”=>“导入”。
6. 出现一个导入向导,根据先导一步步的提示,把上述CNNIC证书导入到证书列表中。
7. 选中CNNIC证书,点右键。在右键菜单中点“属性”。
8. 在跳出的属性对话框中,选中“停用这个证书的所有目的”,然后确定。
9. 最后,为了保险起见,再把这三个证书,导入到“不信任的证书”中(方法和上述类似)。

注:上述操作仅对当前用户生效。如果你的Windows系统中有多个常用的用户帐号,要对每一个用户进行上述设置。

◇清理苹果Mac OS的证书(适用Safari、Chrome)


  对于使用Mac OS下的Safari或Chrome浏览器,则需要执行如下步骤:
请到“实用工具”=>“钥匙串访问”=>“系统根证书”=>“证书”,找到CNNIC的证书并双击,改为“永不信任”。

注:如果你的界面是洋文,其操作方式也八九不离十。俺就不再啰嗦了。

◇清理Linux的证书(适用Chrome、Safari)


  对于Debian和Ubuntu系统,以管理员权限进行如下操作:
方法1:
运行命令:dpkg-reconfigure ca-certificates 会出现一个图形界面,把CNNIC证书不选,并确认。
方法2:
编辑 /etc/ca-certificates.conf 文件,把CNNIC证书对应的行删除或注释掉。然后用命令 update-ca-certificates 使之生效。

注:对于其它Linux发行版本,也有类似操作,俺不再啰嗦。

◇清理Firefox的证书


  不论是在哪个操作系统下,只要你用的是Firefox浏览器(它的证书体系独立于操作系统的),则需要执行如下步骤:
1. 从菜单“工具”=>“选项” ,打开选项对话框
2. 切换到“高级”部分,选中“加密”标签页,点“查看证书”按钮。
3. 在证书对话框中,切换到“证书机构”。
4. 里面的证书列表是按字母排序的。把CNNIC打头的都删除。

注:如果某个证书是Firefox自带的,则删除之后,下次再打开该对话框,此证书还在。不过不要紧,它的所有“信任设置”,都已经被清空了。

◇清理Opera的证书


不论是在哪个操作系统下,只要你用的是Opera浏览器(它的证书体系独立于操作系统的),则需要执行如下步骤:
1. 从菜单“工具”=>“首选项” ,打开首选项对话框
2. 切换到“高级”标签页,在左边选择“安全性”这项。
3. 点“管理证书”按钮,出来一个证书的对话框。切换到“证书颁发机构”标签页。
4. 找到CNNIC的证书并选中,点“查看”按钮,在证书属性对话框中,把“允许连接到使用此证书的网站”的打勾去掉

注:俺是基于Opera 10.10进行操作。新版本的界面可能略有差异。

★如何确认门户已经清理干净?


  为了保险起见,在完成上述的清除工作之后,你需要用浏览器访问一下老流氓的一个网站,地址是 https://www.cnnic.cn 记得用 HTTPS 协议哦。
  如果你的浏览器报告该网站的证书有问题,那恭喜你,你的门户清理干净了 :-)
  如果该网站的页面顺利打开,那你就要重新检查一下,看上述操作是否出了差错。

★可能的副作用


  有些国内网站已经开始使用CNNIC的证书,目前已经知道的有163邮箱(真鄙视网易)。但是甭担心。去除证书后,浏览器在访问上述网站时,会给出一个证书的安全警告。你只需添加一个安全例外即可。

★引申阅读

另外列举一些相关的资料给大伙儿参考:
最最最严重安全警告 此文是AutoProxy的作者WCM所写。目前已经在网上广为流传。

http://felixcat.net/2010/01/throw-out-cnnic/ (CNNIC我不信任你——从受信任的根证书里赶走CNNIC) 这篇文章也被多处转贴.

noCNNIC 已经有热心网友搞了一个自动清除工具.

from http://program-think.blogspot.com/2010/02/remove-cnnic-cert.html