OWASP.org是否显示了正确的.NET公钥固定方式?

时间:2018-01-25 10:46:07

标签: c# security ssl-certificate

我的问题的灵感来自阅读OWASP.org上的证书和公钥固定。

使用ServicePointManager.ServerCertificateValidationCallback时,是否显示以下代码来固定公钥:

public static bool PinPublicKey(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
  if (null == certificate)
    return false;

  String pk = certificate.GetPublicKeyString();
  if (pk.Equals(PUB_KEY))
    return true;

  // Bad dog
  return false;
}

据我所知,回调是开发人员覆盖.NET内置的默认验证的一种方式。如果公钥匹配,则上面的代码返回TRUE。但是,如果存在SSL错误(在sslPolicyErrors参数中)会怎么样?在这种情况下,回调是否应该返回FALSE?

我认为如果没有检测到其他错误,钉扎部分应该是一个额外的检查。否则,我可能会使用匹配的公钥创建恶意证书并欺骗客户端。

0 个答案:

没有答案