0

目前,我有调用使用 SHA-1 加密的外部 Web 服务的源代码,我目前正在通过以下方式调用这些外部 WS

using System.Security.Cryptography.X509Certificates;
X509Certificate2 x509Certificate2 = new X509Certificate2("client.p12", "password"); 

并且每次调用 WS 我都必须按照以下方式传递变量:

 WebserviceName.Timeout = 20000000;
 WebserviceName.PreAuthenticate = true;
 WebserviceName.ClientCertificates.Add(x509Certificate2);

现在,我想知道 .NET 框架 4.0 是否支持 SHA-2。

请告知 X509Certificate2 是否可用于 SHA-2 和/或我可用于此升级的任何其他资源。

谢谢你。

4

1 回答 1

2

X.509 证书本身并没有指定使用哪种算法来生成/验证签名。RSA 公钥可用于任何基于 RSA 的算法。

然而,证书可以使用使用 SHA-1 的算法进行签名(通常是 PKCS#1 v1.5 签名;PSS 签名通常使用 SHA-2,但两者都与 SHA-1 和 SHA-2 兼容)。因此,如果 SHA-1 不再被认为足够安全,您必须确保您的证书本身不会被视为无效。

.NET 已经支持 SHA-2 很长时间了(SHA256甚至在 1.1 中也是如此),但测试你的配置永远不会有坏处。

于 2017-12-04T16:36:00.343 回答