我的任务是通过证书将安全性添加到我们从ASP.NET 4.0 Webforms应用程序调用的外部Web服务。
我已经能够使用证书并使代码正常工作,但在部署该解决方案时仍有许多问题未得到解答。我真的很高兴使用(和处理)证书 - 我理解它们背后的基本理论,我自己从未使用过它们。
该服务是由公司提供的外部REST Web服务,该公司也颁发证书 - 这些服务将每年到期,需要每年更新一次。所以"烘焙"它们作为内部资源进入ASP.NET应用程序并不是一个好主意。
我倾向于将它们放入Windows 2008 Server上的证书存储区。这工作正常,但我不确定:我如何从代码中找到相应的证书?我知道X509Certificate2
和X509Store
类 - 但我应该搜索哪些条件?
如果每年必须续订证书,那么什么项目(序列号?指纹?)将保持不变?或者,每次续订证书时,是否必须更新配置并存储新的序列号或指纹?
答案 0 :(得分:1)
如果我理解正确,您需要确保与正确的网络服务进行通信。
您正在使用https连接到REST服务。它是WCF服务还是Web API?无论哪种方式,Web服务器都将处理SSL部分(嗯,只有托管在Web服务器上而不是自托管)。因此,如果我们轻松实现,那么Web服务就托管在Web服务器上。 Web服务器将处理建立SSL连接并将向您发送服务器证书。
然后,您需要检查是否正在与正确的Web服务器通信。您的选择是:
1) - 可以工作,但你必须确保每年更新配置文件
2) - 在他们更改Web服务器的DNS名称之前会很好用,但这会导致你的web.config发生变化,所以......它会起作用。需要注意的一点是,使用标准.NET框架从X509Certificate2类中提取任何扩展名并不容易。您需要转到ASN.1级别或使用一些可以友好方式提取SAN的加密库。
3) - 会很好地工作。您可以使用根CA证书或专用中间CA证书。您必须确保信任Web服务器证书才能构建证书链,但这通常适用于所有解决方案。它会工作很长时间,因为CA证书的签发时间为20 - 30年。