gpt4 book ai didi

javascript - 无法使用 CertEnroll 在 Windows 7 上安装证书

转载 作者:行者123 更新时间:2023-11-30 13:38:21 29 4
gpt4 key购买 nike

我们有一个现有的证书颁发应用程序(C#、ASP.NET、JavaScript),它向在 IE 中使用 XenRoll 的 Windows XP 用户颁发证书。我需要扩展它以支持 Windows Vista 和 Windows 7 用户,也使用 IE。

对于 Vista 和 7,Microsoft 将 XenRoll ActiveX 控件替换为新的 CertEnroll 控件。我已经在 Vista SP2 中使用了它,但是在 7 中我在安装步骤中遇到了这个错误:

CertEnroll::CX509Enrollment::InstallResponse: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider. 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 中使用它吗?

最佳答案

解决方案是安装 hotfix KB 2078942 .

请注意,此修补程序并未声称可以解决此问题,但确实可以解决!相当烦人,否则我会更早地遇到它:-/

我相信这是 Vista 的回归错误,因为有一个 hotfix让 Vista 修复我遇到的确切问题。

非常感谢 Bruno 昨天花时间帮助我解决这个问题。

关于javascript - 无法使用 CertEnroll 在 Windows 7 上安装证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3628287/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com