Tag Archives: Vista

关于支付宝证书错误 800A138F

关于支付宝的证书使用中出现的 800A138F 错误是个老问题了。这里尝试对这个问题做说说个人看法。

历史原因说来话长,我尽量说得简要一些。首先需要涉及证书(Certificate )在操作系统中通过 ActiveX 形式的登记(Enrollment )这事儿。在 Windows XP 之前,延续使用的是 XEnroll.dll 这个库接口。但是因为这东西比较古老,且出于”更安全”、更方便开发的角度上考虑,从 Windows Vista 与 Windows Server 2008 开始引入 CertEnroll.dll (参考)。这个差异也导致了支付宝证书在不同版本的操作系统间的导出再导入可能会出现问题。

一般来说,错误信息类似如下:

错误原因:'cenroll' 为空或不是对象,错误代码:800A138F
Microsoft XEnroll,在产生密钥对时失败!错误原因:'null'为空或不是对象,错误编码:800A138F

(这个错误信息表明是使用 XEnroll.dll 过程中出现了问题。)

不知出于什么考虑,微软上 Vista 的时候居然没考虑到 XEnroll.dll 这东西没了,向后兼容性如何处理呢? 而有些第三方开发厂商也不是未卜先知。所以,Vista 大量涌入市场的时候就暴露出来了问题(当然第三方开发商也要狠狠的打自己自己一个嘴巴)。微软的拿手解决方案就是发行一个补丁 ,在 Vista 和 Windows Server 2008 上也能使用老的 “Certificate Services Web enrollment pages” (其实就是给 操作系统里安装一个 XEnroll.dll 库)。参见知识库 922706

这个 800A138F 错误大多数时候出现在 Vista 系统上。也是有很多其他客观因素的,其中比较主要的一个是 User Account Control(UAC)这个特性带来的麻烦。UAC 默认级别替用户”多考虑许多”,安全级别控制的很好,好到这个安全成了麻烦。这个如果通过系统管理员用户一项一项的去设置的话,是可以对付安装上的,但是不可避免的是,很多用户不是操作系统专家,甚至不知道什么是”系统管理员”,所以如果把 UAC 关闭的话,可能会直接省了不少麻烦,但是这样的话,又有很多用户会觉得安全性受到了威胁,也难免抓狂,这个选择很是两难。

除了 Vista ,在 XP 上也会遇到这个错误。一般来说,某些第三方的小工具会禁止 Microsoft Certificate Enrollment CAB (这也是非常头疼的一个问题),这种情况下可以考虑修改注册表或者是在这类工具的插件管理的地方把这个 CAB 放开。或者考虑修改注册表的方式 (参考)。

我的个人建议是:不要使用 Windows Vista !(请默念10遍:Windows Vista 是个烂系统) 这是个微软内部都承认失败的操作系统。使用老的 Windows XP 吧,毕竟,微软已经承诺对 XP 延续支持到 2011 年了。至于 Windows 7 ,尽管叫好声不断,但我们现在只能期待。

另外,对于 IE 用户,建议使用 IE7 或者 IE8 (IE6 出来已经有 10 年,老掉牙矣,且从安全性的角度上考虑也的确不佳)。

以上是对支付宝证书错误 800A138F 的一点非专业解释,兄弟我并非 Windows 操作系统专家,期待对 Windows 操作系统更为熟悉的朋友进行补充以及纠正。现在情况已经如此,一刀切解决问题似乎不太现实,没有理由推卸任何责任(尽管个别读者可能这么认为),只能尽量、尽快改进–现在已经在和合作方一起进行对此错误的处理!

用户的痛苦我也是感同身受!这并非客套话。

EOF

注意:这篇文章有实效性,且包括作者本人主观看法。

更新:从用户的反馈来看,Windows 7 比 Vista 易用性和性能好了很多,推荐使用。

Vista 下支付宝控件、证书的相关使用问题

整理一下 Windows Vista 下使用支付宝控件、证书的常见问题。

问题:错误提示 “Cenroll 为空或不是对象,错误代码 800A138F

场景:安装支付宝数字证书时出现。

解决办法:
1) 确保 Windows Vista 服务 Protected Storage 是启动的。开始->控制面板(经典视图) -> 服务–Protected Storage
2) 确保 https://www.alipay.com 在 IE 的信任站点中。
3) 下载微软 Cenroll 控件

另一个同事告诉我,降低 IE 安全级别也可能解决问题。但这毕竟也会带进来新的隐患。

问题:浏览器页面自动关闭

场景:Vista 操作系统,IE7 浏览器,在登陆支付宝的时候出现页面自动关闭。

解决办法:开始->控制面板(经典视图) -> 用户账户 -> 打开或关闭”用户账户控制” ->
“使用用户帐户控制(UAC)帮助保护您的计算机” ,点击把”对号” 去掉,确定。

按提示重启电脑。严格来说,这不是个很彻底的解决方案,但是目前 Vista 的 UAC 机制并不是很灵活。我们可以针对 IE 设置下面提到的 “Configure an application to always run elevated” 模式,这样安全性稍微好点。

附注:UAC 关闭是否安全? 见仁见智的问题。UAC 是个好东西,但是过份作为就变成了对用户的干扰。另外,说一下这个 Vista 上的一个很关键的特性,熟悉 Ubuntu 的朋友会发现这和 Ubuntu 的设计哲学(或者 Unix 的 sudo 机制)有些神似.

友情提示

遇到类似的问题,第一入手点是查找 Windows 系统日志,然后根据日志中的关键词进行搜索引擎查询。尽量不要用
“自动关闭”之类的信息去查,耽误时间。

BTW: 针对这个贴只算整理者,将持续更新。尽管转载。有相关问题可以在这个帖子下面提问,也便于我整理出更多的问题。

EOF