问题标签 [certenroll]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
13165 浏览

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

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

对于 Vista 和 7,Microsoft 用新的 CertEnroll 控件替换了 XenRoll ActiveX 控件。我在 Vista SP2 中可以正常工作,但在 7 中,我在安装步骤中收到此错误:

CertEnroll::CX509Enrollment::InstallResponse:已处理证书链,但以不受信任提供者信任的根证书终止。0x800b0109 (-2146762487)

以下是相关 HTML 和 JavaScript 的片段:

现在,确实根证书不受信任,但我正在调用 InstallResponse,第一个参数设置为 4,即使根证书不受信任,它也应该允许安装。这就像在 Vista 中宣传的那样有效,但在 Windows 7 中似乎没有。

我测试过,如果根证书是可信的,它确实有效。我相信有人会这么说,所以我会先发制人 - 让客户信任根证书对我们来说并不是一个真正的选择(我们希望将客户端身份验证证书分发给客户,作为对他们进行身份验证的一部分在我们的网络上)。

我在这里做错了吗?有没有其他人在 Windows 7 中得到这个工作?

0 投票
1 回答
801 浏览

x509 - 在 CERTENROLL 请求中提供公钥

我想使用模板请求证书(来自 AD 证书服务器)。我想在请求中提供公钥。使用 msft 的 SDK 示例

我想我需要做这样的事情

但我不知道 xx 是什么。我有公钥(在充气城堡 PKCS10 对象中),但它必须采用什么格式才能传递给这个函数?

0 投票
1 回答
8757 浏览

c# - CertEnroll::CX509Enrollment::InstallResponse: 找不到对象或属性。0x80092004 (-2146885628)

我有这个问题,我写了 C# 代码:

  1. 以编程方式生成 CSR
  2. 将 CSR 提交到 Microsoft 证书服务
  3. 接收证书并保存为 pfx。

该代码运行良好,但是当我使用使用 IIS 创建的 CSR 时,我没有以编程方式创建 CSR,而是收到上述错误。

请问可能是什么原因?

我可以在 Microsoft 证书服务中创建证书(通过调用CCertRequestClass.Submit方法并可以在颁发的证书中看到它),但我无法安装它。当我打电话时发生错误CX509EnrollmentClass.InstallResponse。以下是我的 CSR 生成代码:


0 投票
2 回答
2452 浏览

javascript - CX509CertificateRequestPkcs10 对象的 InitializeFromPrivateKey() 中的模板参数在尝试特定模板时导致异常

我在X509Enrollment.CX509CertificateRequestPkcs10对象InitializeFromPrivateKey()中指定模板参数时遇到问题。除了“用户”模板之外的任何内容都会导致以下异常:-

CertEnroll::CX509CertificateRequestPkcs10::InitializeFromPrivateKey:此 CA 不支持请求的证书模板。0x80094800 (-2146875392)

我需要使用一个特定的证书模板,当我尝试它时,代码会抛出异常。该模板存在于 CA 和运行以下代码的客户端计算机上。

Javascript代码如下:

其他几个问题
- 我假设模板应该存在于客户端机器上?否则它如何知道 CA 的位置来查询模板?
- 客户端上的 CertEnroll 甚至可以针对 Windows 2003 CA 服务器工作吗?

如果您能帮助我,将不胜感激!!!

附加信息
- 客户端是 Windows 7,MS IE9 客户端以管理员身份运行。
- 通过 HTTPs 访问托管上述页面的 Web 应用程序。
- Web 应用程序托管在 Win2003 CA 服务器上。

在发布之前,我查看了...
- 关于 CertEnroll + InitializeFromPrivateKey 的 Stackoverflow 线程
-关于使用模板 OID 而不是模板名称的博客
- MSDN / alejacma 的站点
- MSDN 上的 CertEnroll API

0 投票
1 回答
1076 浏览

.net - 使用 CERTENROLLLib 创建私钥时找不到文件错误

System.IO.FileNotFoundException: CertEnroll::CX509PrivateKey::Create: 系统找不到指定的文件。0x80070002 (WIN32: 2)

上面的错误是当我尝试使用 CertEnroll.dll 中的 CX509PrivateKeyClass 类创建私钥以生成 CSR 时引发的异常。

它似乎只发生在我尝试执行部署在 Windows 2008 服务器上的代码时。

它在 Windows 7 下运行良好。

0 投票
1 回答
2663 浏览

asp.net - Asp.Net CertEnroll CX509CertificateRequestPkcs10 异常

我有一个 asp.net 4.0 项目,它结合使用 Bouncy Castle 和 .Net 框架来创建 X509 证书。

它在我的 W7 开发机器上正常运行,但是当安装在 W2008(32 位,而不是 r2)上时,这段代码:

抛出此异常:

无法将“System.__ComObject”类型的 COM 对象转换为接口类型“CERTENROLLLib.CX509CertificateRequestPkcs10”。此操作失败,因为 IID 为“{728AB35B-217D-11DA-B2A4-000E7BBB2B09}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE)) .

最初我认为这可能是 64 位服务器问题,因为 COM 仅兼容 32 位,但服务器是 32 位的。

该应用程序是使用 Framework 4.0 构建的,分配的 IIS AppPool 正在运行 4.0,集成模式,具有“网络服务”的标识 - 与我的开发机器上的所有内容完全相同,与使用的客户端浏览器 (IE8 32) 一样。

W2008-32(标准)是否没有开箱即用地实现 CERTENROLLLib?有谁知道如何使它在这种情况下表现?

感谢您的任何建议!

0 投票
3 回答
6265 浏览

javascript - 如何使用 javascript 创建签名的 PKCS#7 消息?

我正在尝试使用 javascript 在客户端为 PKCS#10 证书请求创建签名的 PKCS#7 消息。

PKCS#10 上有很好的例子:http: //blogs.msdn.com/b/alejacma/archive/2009/01/28/how-to-create-a-certificate-request-with-certenroll-javascript.aspx

但我需要创建 PKCS#7 并且无法弄清楚如何去做。CertEnroll 的官方文档中缺少示例(实际上根本没有):http: //msdn.microsoft.com/en-us/library/windows/desktop/aa374850 (v=vs.85).aspx

我最终得到了这段代码:

有没有办法用 javascript 创建 PKCS#7 消息?

更新:我已经收到了 PKCS#10 证书请求(请参阅代码示例中的第一个函数)并且需要为其创建 PKCS#7 签名消息。好的,我解释一下我的问题。如何使用 javascript 创建签名的 PKCS#7 消息?(理想情况下,它应该允许使用 UI 指定适当的证书。)

至于 javascript,我知道这不是方便的方式,但很合适,因为我必须在客户端(在浏览器中)处理它。此外,cert注册IX509CertificateRequestPkcs7接口有标记为[WebEnabled]的方法,所以我相信一定有办法做到我所说的。

0 投票
1 回答
4222 浏览

c# - 如何使用 CertEnroll 生成扩展验证自签名证书?

由于 Windows Azure 中的一个错误,所有与来自 Windows 8 应用程序的 Azure REST API 一起使用的自签名客户端证书都必须指定为扩展验证证书。

为了提供更好的用户体验,我试图在远程服务器上生成这个自签名证书。我正在使用Certificate Enrollment API,这是一个作为 Windows 一部分分发的 COM 库,如对如何使用 C# 创建自签名证书的问题的回答中所述。

代码基本相同,只是为了我自己的使用稍作修改:

我发现ICertificatePolicy界面似乎代表了正确的结构类型,但我无法推断出使用权IPolicyQualifier。在我的代码中,限定符是

为清楚起见,您可以在此处配置 Windows 8 证书管理器中的信息:

在哪里启用扩展验证

在证书上产生此属性:

证书上的扩展验证属性

我的代码目前产生这个属性:

证书上没有完全扩展的验证属性

关闭,但还没有。

是否有另一种方法将数据加载到 中,IPolicyQualifier以便产生预期的结果,也许使用 InitialiseDecode 方法?

0 投票
0 回答
502 浏览

windows-phone-8 - Windows phone 8 注册过程不成功

我一直在尝试注册 Windows Phone 8 开发人员设备,但没有成功。

我收到了来自设备的 CSR,我应该创建一个有效的响应,但没有从设备发出进一步的请求。对于证书注册 Web 服务步骤,我使用以下响应:

配置 XML:

Base64 编码的 XML 的最终答案是:

怎么了?我们发送了最后一个文件作为响应,但设备什么也不做,注册也不成功。是否必须拥有一个正在运行的 OMADM 服务器?谢谢

0 投票
1 回答
2290 浏览

c# - C# 使用 certenroll.dll 在没有 CA 的情况下生成非自签名客户端 CX509Certificate 请求

我有一个使用 CERTENROLL.dll 的 CX509CertificateRequest 证书功能在 C# 中生成的自签名根证书。

我想编写一个函数,使用相同的 API 生成由我的 root 签名的客户端证书。但是,我能找到的唯一不生成自签名证书的 CertEnroll 选项需要经过身份验证的 CA。

似乎有一个用于设置 SignerCertificate 的标志,但它总是无法初始化。

有谁知道我如何生成由我的根签名的客户端 CX509CertificateRequest?

任何帮助或建议将不胜感激。