每年更新的证书 - 如何在证书库中可靠地找到它们?

时间:2015-05-08 05:55:56

标签: certificate x509certificate

我的任务是通过证书将安全性添加到我们从ASP.NET 4.0 Webforms应用程序调用的外部Web服务。

我已经能够使用证书并使代码正常工作,但在部署该解决方案时仍有许多问题未得到解答。我真的很高兴使用(和处理)证书 - 我理解它们背后的基本理论,我自己从未使用过它们。

该服务是由公司提供的外部REST Web服务,该公司也颁发证书 - 这些服务将每年到期,需要每年更新一次。所以"烘焙"它们作为内部资源进入ASP.NET应用程序并不是一个好主意。

我倾向于将它们放入Windows 2008 Server上的证书存储区。这工作正常,但我不确定:我如何从代码中找到相应的证书?我知道X509Certificate2X509Store类 - 但我应该搜索哪些条件

如果每年必须续订证书,那么什么项目(序列号?指纹?)将保持不变?或者,每次续订证书时,是否必须更新配置并存储新的序列号或指纹?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要确保与正确的网络服务进行通信。

您正在使用https连接到REST服务。它是WCF服务还是Web API?无论哪种方式,Web服务器都将处理SSL部分(嗯,只有托管在Web服务器上而不是自托管)。因此,如果我们轻松实现,那么Web服务就托管在Web服务器上。 Web服务器将处理建立SSL连接并将向您发送服务器证书。

然后,您需要检查是否正在与正确的Web服务器通信。您的选择是:

  1. 使用指纹手动更新配置文件,该指纹将在每次续订Web服务器证书时更改。续订证书时,序列号也会发生变化。
  2. 检查主题中的公用名称,如果主题备用名称(SAN =证书中的扩展名)或CN(SAN中不包含证书)中的(Web服务器的)DNS名称正确,则检查其名称是什么? LI>
  3. 从Web服务器的证书构建证书链(使用X509Chain.Build方法)并检查它是否包含您嵌入在ASP.NET应用程序中的CA证书,或者它是否与来自CA的指定指纹匹配你配置。
  4. 1) - 可以工作,但你必须确保每年更新配置文件

    2) - 在他们更改Web服务器的DNS名称之前会很好用,但这会导致你的web.config发生变化,所以......它会起作用。需要注意的一点是,使用标准.NET框架从X509Certificate2类中提取任何扩展名并不容易。您需要转到ASN.1级别或使用一些可以友好方式提取SAN的加密库。

    3) - 会很好地工作。您可以使用根CA证书或专用中间CA证书。您必须确保信任Web服务器证书才能构建证书链,但这通常适用于所有解决方案。它会工作很长时间,因为CA证书的签发时间为20 - 30年。