关于支付宝证书错误 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 易用性和性能好了很多,推荐使用。


9 thoughts on “关于支付宝证书错误 800A138F

  1. sthots

    不要忘了,现在的新售电脑都是预装vista
    可以期望用户刻意降级么?

    Reply
  2. Fenng

    @sthots
    所以,这的确是个老大难的问题。不可否认,有一部分用户会对付着用,有一部分用户会降级的。或许等到 Windows 7 出来后会好的。

    Reply
  3. shooray

    微软的xenroll组件(cenroll)被禁了,现在是由天威诚信开发的itrusEnroll替代之。

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *