每年更新的证书 - 如何在证书商店中可靠地找到它们?
Certificates being renewed yearly - how to reliably find them in the cert store?
我的任务是通过证书为我们从 ASP.NET 4.0 Webforms 应用程序调用的外部 Web 服务增加安全性。
我已经能够使用证书并让代码正常工作,但是在部署该解决方案时仍有很多问题没有得到解答。我对实际使用(和处理)证书还很陌生——我理解它们背后的基本理论,只是我自己从来没有用过它们。
该服务是一家公司提供的外部 REST 网络服务,该公司还颁发证书 - 这些证书每年都会过期,需要每年续订。因此 "baking" 将它们作为内部资源放入 ASP.NET 应用程序似乎不是一个好主意。
我倾向于将它们放入 Windows 2008 服务器上的证书库中。这很好用,但我不确定:如何从代码中查找 适当的证书?我知道 X509Certificate2
和 X509Store
类 - 但我应该搜索什么 criteria?
如果必须每年更新该证书,什么项目(序列号?指纹?)将保持不变?或者我是否必须在每次续订证书时更新我的配置并存储新的序列号或指纹?
如果我理解正确,您需要确保您使用的是正确的网络服务。
您正在使用 https 连接到 REST 服务。它是 WCF 服务还是 Web API?无论哪种方式,Web 服务器都将处理 SSL 部分(嗯,仅当托管在 Web 服务器上而不是自托管时)。因此,如果我们让它变得简单,那么 Web 服务将托管在 Web 服务器上。 Web 服务器将处理建立 SSL 连接并将向您发送服务器证书。
然后您需要检查您是否正在与正确的网络服务器通信。您的选择是:
- 使用指纹手动更新配置文件,每次更新 Web 服务器的证书时指纹都会更改。当他们更新证书时,序列号也会改变。
- 如果主题备用名称(SAN = 证书中的扩展名)或 CN(当 SAN 不在证书中时)中的(Web 服务器的)DNS 名称正确,则检查主题中的通用名称或更好的名称
- 从 Web 服务器的证书构建证书链(使用 X509Chain.Build 方法)并检查它是否包含您嵌入到 ASP.NET 应用程序中的 CA 证书,或者它是否与给定的 CA 指纹相匹配你配置。
1) - 可以,但您必须确保每年更新配置文件
2) - 在他们更改 Web 服务器的 DNS 名称之前会很好地工作,但这会导致您的 web.config 发生更改,所以......它会起作用。需要注意的一件事是,使用标准 .NET 框架从 X509Certificate2 class 中提取任何扩展并不容易。您需要转到 ASN.1 级别或使用一些可以以友好方式提取 SAN 的加密库。
3) - 会很好用。您可以使用根 CA 证书或专用中间 CA 证书。您必须确保要构建的证书链信任 Web 服务器证书,但这通常适用于所有解决方案。它会工作很长时间,因为 CA 证书的颁发时间为 20-30 年。
我的任务是通过证书为我们从 ASP.NET 4.0 Webforms 应用程序调用的外部 Web 服务增加安全性。
我已经能够使用证书并让代码正常工作,但是在部署该解决方案时仍有很多问题没有得到解答。我对实际使用(和处理)证书还很陌生——我理解它们背后的基本理论,只是我自己从来没有用过它们。
该服务是一家公司提供的外部 REST 网络服务,该公司还颁发证书 - 这些证书每年都会过期,需要每年续订。因此 "baking" 将它们作为内部资源放入 ASP.NET 应用程序似乎不是一个好主意。
我倾向于将它们放入 Windows 2008 服务器上的证书库中。这很好用,但我不确定:如何从代码中查找 适当的证书?我知道 X509Certificate2
和 X509Store
类 - 但我应该搜索什么 criteria?
如果必须每年更新该证书,什么项目(序列号?指纹?)将保持不变?或者我是否必须在每次续订证书时更新我的配置并存储新的序列号或指纹?
如果我理解正确,您需要确保您使用的是正确的网络服务。
您正在使用 https 连接到 REST 服务。它是 WCF 服务还是 Web API?无论哪种方式,Web 服务器都将处理 SSL 部分(嗯,仅当托管在 Web 服务器上而不是自托管时)。因此,如果我们让它变得简单,那么 Web 服务将托管在 Web 服务器上。 Web 服务器将处理建立 SSL 连接并将向您发送服务器证书。
然后您需要检查您是否正在与正确的网络服务器通信。您的选择是:
- 使用指纹手动更新配置文件,每次更新 Web 服务器的证书时指纹都会更改。当他们更新证书时,序列号也会改变。
- 如果主题备用名称(SAN = 证书中的扩展名)或 CN(当 SAN 不在证书中时)中的(Web 服务器的)DNS 名称正确,则检查主题中的通用名称或更好的名称
- 从 Web 服务器的证书构建证书链(使用 X509Chain.Build 方法)并检查它是否包含您嵌入到 ASP.NET 应用程序中的 CA 证书,或者它是否与给定的 CA 指纹相匹配你配置。
1) - 可以,但您必须确保每年更新配置文件
2) - 在他们更改 Web 服务器的 DNS 名称之前会很好地工作,但这会导致您的 web.config 发生更改,所以......它会起作用。需要注意的一件事是,使用标准 .NET 框架从 X509Certificate2 class 中提取任何扩展并不容易。您需要转到 ASN.1 级别或使用一些可以以友好方式提取 SAN 的加密库。
3) - 会很好用。您可以使用根 CA 证书或专用中间 CA 证书。您必须确保要构建的证书链信任 Web 服务器证书,但这通常适用于所有解决方案。它会工作很长时间,因为 CA 证书的颁发时间为 20-30 年。