前几天已经写了2个帖子(分别是扫盲数字证书的基本知识CNNIC干过的那些破事)作铺垫,终于开始来说正题——关于CNNIC的CA证书。

  ★CNNIC到底干了啥事?
  从前面的帖子,大伙应该都看出来,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证书(不明白证书间是如何信任的,请回顾一下俺扫盲帖中提到的“证书信任链”)。因此,即使你电脑上没有任何CNNIC的根证书,但是只要有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、分别选中2个CNNIC证书及1个Entrust证书,点右键。在右键菜单中点“属性”。
8、在跳出的属性对话框中,选中“停用这个证书的所有目的”,然后确定。

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

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

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

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

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

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

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

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

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

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

  ★可能的副作用
  有些国内网站已经开始使用CNNIC的证书,目前已经知道的有163邮箱(真鄙视网易)。另外,因为Entrust是老牌CA,有些国外的网站已经依赖它的证书。根据目前网友的反馈,依赖Entrust的网站有如下几个:
https://genifp.apple.com
https://swdlp.apple.com
https://torproject.org

  但是甭担心。去除证书后,浏览器在访问上述网站时,会给出一个证书的安全警告。你只需添加一个安全例外即可。

  ★引申阅读
  另外列举一些相关的资料给大伙儿参考:
最最最严重安全警告 此文是AutoProxy的作者WCM所写。目前已经在网上广为流传。
CNNIC我不信任你——从受信任的根证书里赶走CNNIC 这篇文章也被多处转贴
noCNNIC 已经有热心网友搞了一个自动清除工具,俺还没空去试验。


版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
http://program-think.blogspot.com/2010/02/remove-cnnic-cert.html