【问题标题】:Correctly automating the creation of self-signed certificates for development正确地自动创建用于开发的自签名证书
【发布时间】:2015-02-25 14:38:03
【问题描述】:

我正在尝试自动创建测试环境,其中一个步骤是创建自签名证书以用于 IIS 上的 SSL 绑定。它是一个 WPF 应用程序,旨在根据指定的配置设置运行一次以创建所有网站、应用程序、Windows 服务等。

我尝试使用 CertEnrollLib (certenroll.dll),但由于某些未知原因,我在服务器上运行代码时收到以下错误:

当我在我的机器上运行时,一切正常。 我的第一个问题是,有人知道为什么会这样吗?我偶然发现了这个链接:

Problems when compiling and running code that uses CertEnroll with .NET 4.0 and x64

我已经尝试过上述解决方案:

为了摆脱这些编译错误,我们更改了“Embed Interop 类型”到“假”中 CERTCLIENTLib 和 CERTENROLLLib 引用的属性。

无济于事。还尝试按照链接中的说明更改平台:

我还是没有 是时候弄清楚为什么会发生这种情况了,但是如果您针对 x86 进行编译 平台而不是任何 CPU 平台(这使得代码运行 默认情况下针对 x64 系统上的 x64 平台),它将正常工作。

但这也不起作用,我得到同样的错误。我之前也尝试过使用 BouncyCastle,但遇到了另一个 COM 错误。


编辑:感谢@CryptoGuy,我得到了修复。而不是使用引用库的类构造函数:

var cert = new CX509CertificateRequestCertificate(); // old, not working
// gets the right class to use with my machine, but not with the server

我将其替换为:

IX509CertificateRequestCertificate cert = (IX509CertificateRequestCertificate) Activator.CreateInstance(Type.GetTypeFromProgID("X509Enrollment.CX509CertificateRequestCertificate"));
// gets whatever is the CX509CertificateRequestCertificate implementation is

【问题讨论】:

  • 什么操作系统运行你的服务器?
  • @CryptoGuy 服务器:Windows Server 2008® Service Pack 2, namely Windows Server Web® on control panel->system。我的机器:Windows 7® Service Pack 1.

标签: c# .net ssl ssl-certificate


【解决方案1】:

感谢您确认您的服务器操作系统。问题是 IX509CertificateRequestCertificate2 接口在 Windows Server 2008 中不可用,它是在 Windows 6.1 (Windows 7/Windows Server 2008 R2) 中添加的。 您需要使用标准的IX509CertificateRequestCertificate。从技术上讲,它们是相同的,新界面只是增加了注册 Web 服务支持(以前的系统中不可用)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    相关资源
    最近更新 更多