我们有一个现有的证书颁发应用程序(C#,ASP.NET,JavaScript),它向在IE中使用XenRoll的Windows XP用户颁发证书。我需要扩展它以支持Windows Vista和Windows 7用户,也使用IE。无法使用CertEnroll在Windows 7上安装证书
对于Vista和7,Microsoft使用新的CertEnroll控件替换了XenRoll ActiveX控件1。我有在Vista SP2这个工作,但在我7在安装步骤得到这个错误:
CertEnroll :: CX509Enrollment :: InstallResponse: 证书链处理,但终止于根证书 这信任提供者不信任 。 0x800b0109(-2146762487)
下面是有关HTML片段&的JavaScript:
<object id="classFactoryObj" classid="clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"></object>
<script type="text/javascript">
function InstallCert()
{
try
{
var classFactory = document.getElementById("classFactoryObj");
var objEnroll = classFactory.CreateObject("X509Enrollment.CX509Enrollment");
var signedCert = '-----BEGIN CERTIFICATE-----' +
'REMOVED FOR BREVITY' +
'-----END CERTIFICATE-----';
objEnroll.Initialize(1); // User context
objEnroll.InstallResponse(4, signedCert, 6, ""); // AllowUntrustedRoot = 4
alert('Certificate installed');
}
catch (ex)
{
alert('Unable to install certificate: ' + ex.description);
}
}
InstallCert();
</script>
现在,它是真实的根证书不被信任,但我打电话InstallResponse与第一参数设置为4,即使根证书不受信任也应允许安装。这在Vista中广告,但在Windows 7似乎并没有。
我测试过,如果根证书是可信的,它确实有效。我确信有人会这样说,所以我会抢先一步 - 让客户信任根证书对我们来说不是一个真正的选择(我们想要将客户端身份验证证书分发给客户,作为验证它们的一部分在我们的网络上)。
我在这里做错了什么?其他人有没有在Windows 7中工作?
我对ActiveX设置没有问题 - 如果您通过HTTPS运行CertEnroll,您将无法获得该设置。 – Cocowalla 2010-09-02 16:32:20
的确,我今天只是在一个简单的HTTP测试服务器上运行它。 – Bruno 2010-09-02 16:36:34
我刚刚检查过,它是第一个为我工作的'enrollObj.InstallResponse(4,xmlHttpRequest.responseText,0,“”);'也许在初始化的其余部分有其他内容。 (对不起,我现在不记得所有的细节。) – Bruno 2010-09-02 16:40:29