1

我必须将软件部署到将安装证书并使用它的 n 个客户端。我不想只部署两个文件(.pfx 和 exe)(.exe 将包含 .pfx)。

我现在正在做的是从某个位置导入证书。

X509Certificate2^ x509 = gcnew X509Certificate2;
x509->Import( "C:\\Tmp\\certficate.pfx" );

可能吗 ?

4

2 回答 2

12

您始终可以将证书数据作为资源嵌入。

但是有一个警告:如果有人获得了可执行文件,他们可以很容易地提取 PFX 文件。

您是否能够安全地分发可执行文件?

以下是一些粗略的步骤,摘自:http ://www.spikezilla-software.com/blog/?p=24

  • 将 PFX 添加到您的项目中。然后在文件上单击一次,在“属性”窗口中,将“构建操作”设置为“嵌入式资源”
  • 读取嵌入的 PFX 文件并导入证书

这是 C#,但您应该能够很容易地转换为 C++/CLI:

var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyFile.pfx");
var bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
var cert = new X509Certificate2(bytes, "certPassword");
于 2012-01-18T17:41:07.717 回答
2

一旦我嵌入它,这对我有用。

byte[] cert = Properties.Resources.nameOfCertificate;
X509Certificate2 x509 = new X509Certificate2();
x509.Import(cert, "password", X509KeyStorageFlags.MachineKeySet);
于 2016-02-22T22:09:49.453 回答