使用 clickonce 应用程序在客户端上打包和安装 x509 证书

Packaging and installing x509 certificate on client with clickonce app

我刚刚开始编写 WCF 服务程序,并为当地警察局启动并运行了我的第一个服务。他们将使用它来查找车牌以了解夜间停车违规行为。它正在运行消息安全和用于加密的 x509 证书。

有没有办法将证书与安装打包在一起,或者服务如何根据我使用的身份验证创建证书并将其下载到客户端?

现在我将在每本难读的书上手动安装它,但我想使该过程更加自动化。

证书分发是大多数企业IT部门的标配,应用程序修改CA根是有些忌讳的。

如果您正在谈论将服务器证书的 public 密钥推送到每个客户端,请查看 Add a trusted root certification authority to a Group Policy object. If you are talking about creating a client certificate for use of mutual TLS authentication, look at Deploy User Certificates


相反,如果您谈论的是临时证书或其他证书,这些证书只能由您的应用程序从代码访问,您可以将其添加为程序集中的嵌入式资源并通过 X509Certificate2(byte[]) constructor 使用它。

我要提醒您不要将私钥放入您的应用程序资源中,因为该应用程序的任何用户都可以用它做任何他们想做的事。 PKI 的设计使得不需要共享私钥。无论如何,Jeff Valore shows a method to do so,我在下面转载:

var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyCert.cer");
var bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
var cert = new X509Certificate2(bytes, "certPassword");