进行SSL连接时需要验证主机名

问题描述 投票:0回答:1

我需要在进行SSL连接时验证4件事

  1. URL中的主机名与CN和SAN证书相匹配
  2. 服务器提供的证书由CA在信任存储中签名
  3. 服务器证书未过期
  4. CA证书尚未过期

码:

options.withT1s(new MqttClientOptionsBuilderT1sParameters()
{
    CertificationValidationCallBack=(cer, chain, error, o) =>
    {
        if(//do checks here)
        {
          //    check pass
              return true;
        }
        else
        {
          //   check fail
             return false;
        }
    }
}
c# asp.net ssl ssl-certificate
1个回答
0
投票

这四项检查已由系统完成。如果您没有自定义回调,那将是您的强制执行。

在自定义回调中,那些状态由errorchain参数表示... error是[Flags]值。

如果设置了RemoteCertificateNameMismatch,则该名称与SAN条目(如果没有SAN-DNS条目,则为CN条目)不匹配 - 您的条件(1)。

如果设置了RemoteCertificateChainErrors,则chain对象将指示它无效的原因(某些内容已过期,根目录不可信,以及更多潜在问题)。

所以,最简单的答案(在没有注册回调之后)是return errors == SslPolicyErrors.None;

© www.soinside.com 2019 - 2024. All rights reserved.