包含证书和项目

时间:2014-02-18 19:12:06

标签: .net deployment digital-certificate

我有一个使用WCF服务的.NET控制台应用程序项目。为了使用该服务,应用程序必须提供多个数字证书。

到目前为止,我一直在从本地计算机上运行此应用程序,因此应用程序能够从我的本地文件系统中提取证书。但是,我目前有兴趣将该应用程序部署到其他几台机器上。

在项目中包含这些证书的正确方法是什么?特别是,将证书存储在resource个文件中是否有意义?

1 个答案:

答案 0 :(得分:0)

这对我很有意思;我将在几个月内在自己的项目中处理同样的问题。

我想说答案的很大一部分取决于您计划管理证书的方式。它们是否需要作为常规密钥轮换的一部分进行更新(即,这是否适用于低风险内部网应用程序以外的任何内容)?由于您已经在使用数字证书,我的猜测是应用程序处理高价值数据,或者没有在Intranet中运行,或者服务在Intranet外部(否则,您应该使用Windows集成身份验证与服务帐户) - 无论哪种方式,您都必须定期(可能是每年)更新您的证书。

因此,我认为,关键问题是:如果必须更新证书,您是否希望通过重新部署应用程序来实现?

您当然可以将证书包含在资源文件中。您还可以将它们捆绑在一个使用WiX构建的MSI包中(向我见过的最酷的OSS项目之一喊出:))。但是,如果您要在应用程序部署计划之外更新证书,那么这些方法都没有意义。

在这种情况下,您可能想要考虑一个单独的脚本/迷你安装程序/服务,它只是为了更新证书而存在。 PowerShell可能是解决此需求的最简单方法 - 尤其是当应用程序仅在您的Intranet中运行时(有许多工具可用于在远程计算机上定期自动运行PowerShell脚本)。

是的,总的来说,我可能会说使用PowerShell脚本进行证书部署。然后,您只需要编写应用程序代码就可以处理证书中的更改(例如,我认为您不能依赖指纹来查找证书存储区中的证书)。如果您只是从文件加载证书,那甚至都不是问题。