星期日, 五月 10, 2009

关于Windows Vista/7上使用支付宝的数字证书的问题

昨天买了笔记本,有点好奇,安装了M$新出的Windows 7 RC版。除了有一堆软件不兼容无法安装,支付宝数字证书导入的兼容问题也让我着实头疼。

网上早已有了一堆解决方法,我这里只是想记录自己手动解决这个问题的方案——因为我担心从网上下载的相关文件会被hack过:)


先从技术的角度来解释,为什么不能导入数字证书(报错:80020009)。导入数字证书需要使用microsoft certificate enrollment插件(即xenroll.dll/cab),这一特性支持Windows2000(包括)之后,Vista(不包括)之前的操作系统,服务器使用Windows Server 2003。这个插件已经应用了很多年,Microsoft认为此插件已经不再足以提供必要的安全特性,因此新一代操作系统Vista/Windows Server 2008上使用了新的数字证书特性:CertEnroll。并且,原来的特性Xenroll在这两个操作系统上被禁用。Windows Server 2008则会根据客户端的类型自动选择其支持的certificate enrollment Web pages是使用Xenroll还是CertEnroll。


因此,为了在Vista/7系统上导入支付宝的数字证书,首先我们要允许Xenroll,且将Xenroll.dll注册为系统服务。网上有“一键解决”之类的解决方案,下面是我的手动解决方案(在我看来更安全一:)


一:修改注册表(网上复制来的,可以自己做.reg文件,也可以自己用regedit修改。(1.其实我不知道注册xenroll.dll是不是必须要经过这一步,你可以先看第二步,如果注册失败,再修改这里的注册表。2.当你注册完第二步的xenroll.dll之后,就可以恢复xenroll禁用状态了,至少我禁用之后仍然可以导入数字证书):
Microsoft Certificate Enrollment CAB禁用.reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{127698e4-e730-4e5c-a2b1-21490a70c8a1}]
"Compatibility Flags"=dword:00000400
"IeaDo"=-
Microsoft Certificate Enrollment CAB开锁 .reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{127698e4-e730-4e5c-a2b1-21490a70c8a1}]
"Compatibility Flags"=dword:00000000
"IeaDo"=dword:00000001
二:注册xenroll.dll
1.首先找一个XP系统,搜索到xenroll.dll(或者直接在Windows\system32\找到),复制到Vista/7系统的Windows\system32下。
2.新建一个快捷方式,命令输入cmd,建完之后,右击,选“以管理员身份运行”。




3.执行regsvr32 C:\Windows\System32\xenroll.dll(请根据你的Windows安装目录修改路径)。如果提示注册成功,你就可以导入支付宝的数字证书了。

没有评论: