支付宝数字证书常见问题解决思路
这个错误直接是由于cenroll创建失败造成的。
什么是cenroll呢?它是一个ActiveX控件。在vista以下版本中,它的名称叫xenroll.dll,,classid是127698e4-e730-4e5c-a2b1-21490a70c8a1;而到了vista及以上版本,它的名称是CernEnroll.dll,classid是884e2049-217d-11da-b2a4-000e7bbb2b09。
Cenroll控件复制枚举CSP,产生证书请求,回写证书。
支付宝网站能够自动识别操作系统并创建正确的cenroll对象,但是也会出现创建对象失败,当cenroll没有被创建,但是网页上又访问cenroll时,就会抛出800A138F错误。
可能原因:
把*.alipay.com www.alipay.com ca.alipay.com 加入可信站点,然后将该域的activex控件相关选项都启用。
注册表中可以屏蔽IE加载的ActiveX控件。IE、遨游、360安全卫士、杀毒软件都有可能修改注册表键值,将注册控件屏蔽。
被屏蔽之后的现象是:IE不会有任何安装activex控件的提示
Vista以下版本(x86IE/x86OS,x64IE/x64OS)
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{127698e4-e730-4e5c-a2b1-21490a70c8a1}] "Compatibility Flags"=dword:00000000
Vista、Win7(x86IE/x86OS ,x64IE/x64OS)
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{127698e4-e730-4e5c-a2b1-21490a70c8a1}] "Compatibility Flags"=dword:00000400 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{884e2049-217d-11da-b2a4-000e7bbb2b09}] "Compatibility Flags"=dword:00000000
Vista以下版本(x86IE/x64OS)
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\ActiveX Compatibility\{127698e4-e730-4e5c-a2b1-21490a70c8a1}] "Compatibility Flags"=dword:00000000
Vista、Win7(x86IE/x64OS)
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node \Microsoft\Internet Explorer\ActiveX Compatibility\{127698e4-e730-4e5c-a2b1-21490a70c8a1}] "Compatibility Flags"=dword:00000400 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node \Microsoft\Internet Explorer\ActiveX Compatibility\{884e2049-217d-11da-b2a4-000e7bbb2b09}] "Compatibility Flags"=dword:00000000
如果修改注册表之后,仍然无法解决,请设置浏览器相关项。
具体见1.1.2或者1.1.3
(1)IE里面,工具->管理加载项
(2)选择“Internet Explorer 中已经使用的加载项”
(3)可以将“CEnroll Class”启用
(1)如果注册控件被禁用,IE7会有提示,则表示cenroll控件被禁用
(2)可以看到,X509 Enrollment WebclassFactory 已经被禁用,这个时候,需要“启用”
800A01B6:访问了对象不存在的方法或者属性
80070057: 参数无效
明明cenroll控件对象已经创建成功,代码肯定也没有问题,为什么还说访问了控件的方法不存在、参数无效呢。
哈哈,除了1.1.1中所述,可以屏蔽控件之外,还可以替换控件。
800A01B6 、80070057的错误原因就是cenroll控件被“重置”。
参考 1.1.1 中的说明,控件被屏蔽之后,还可以被“重置”。
如下图,xp下面的注册控件被屏蔽,然后被另外一个
{129D7E40-C10D-11D0-AFB9-00AA00B67A42}的控件替换。
这样当网页脚本创建{127698e4-e730-4e5c-a2b1-21490a70c8a1}控件时,实际上创建的是{129D7E40-C10D-11D0-AFB9-00AA00B67A42}控件。
由于被替换之后的控件无法实现cenroll控件的功能,所以网页调用时会抛出800A01B6、80070057的错误,这个时候其实创建的并不是cenroll控件,我们都被欺骗了。
解决办法,和1.1.1一样,修复注册表,启用cenroll控件。
80090016错误和操作系统文件夹权限有关
C:\Documents and Settings\你的用户名\Application Data\Microsoft\Crypto\RSA,对着这个RSA文件加右键-属性-安全-添加你的用户名并赋予完全控制权限
可以参考http://www.ylmf.net/read.php?tid=419183
操作:.我的电脑---工具-----文件夹选项-----查看,在此选项卡中找到高级设置,将其中使用简单文件共享和隐藏受保护的操作系统(推荐)的钩去掉,并显示所有文件和文件夹点确定
授予帐户 Administrators
和system
对C:\Documents and Settings\Administrator\Application Data\Microsoft\Crypto\rsa的完全控制权限:
我的电脑-----C:\Documents and Settings\Administrator\Application Data\Microsoft\Crypto\
找到文件夹rsa--鼠标右键---属性----安全----添加----Administrator---检查名称(这步很重要,别直接点确定了)
---确定--完全控制(这步很重要,别直接点确定了)
同样道理再添加一个叫system的用户,仍然完全控制,好了以后就是这样的。
我的电脑-----C:\Documents and Settings\Administrator\Application Data\Microsoft\Crypto\找到文件夹rsa--鼠标右键---属性----共享----共享此文件夹----权限-------添加----Administrator---检查名称(这步很重要,别直接点确定了)---确定--完全控制(这步很重要,别直接点确定了)
其他步骤参见 [ntfs格式]
授予帐户 Administrators
和system
对C:\Documents and Settings\Administrator\ApplicationData\Microsoft\SystemCertificates\My\Certificates 的完全控制权限:
操作我的电脑----C:\Documents and Settings\Administrator\Application Data\Microsoft\SystemCertificates\My\
找到文件夹Certificates--鼠标右键---属性----安全----添加----Administrator---检查名称(这步很重要,别直接点确定了
---确定--完全控制(这步很重要,别直接点确定了)
授予帐户 Administrators和system对C:\Documents and Settings\All Users的完全控制权限:
操作:我的电脑----C:\Documents and Settings\
找到文件夹All Users--鼠标右键---属性----安全----添加----Administrator---检查名称(这步很重要,别直接点确定了)
---确定--完全控制(这步很重要,别直接点确定了)
同样道理再添加一个叫system的用户,仍然完全控制,好了以后就是这样的。
启动 ProtectedStorage 服务(在控制面板的管理工具的服务里启动,此步不赘述)
已处理证书链,但是在不受信任提供程序信任的根证书中终止。
Vista及以上版本中,需要用户证书的证书链已经预置在浏览器中,因此这样的用户需要手动安装证书链。
发表于 @ 2009年06月23日 15:01:00 | 评论( loading... ) | 举报| 收藏