gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:20 25 4
gpt4 key购买 nike

我需要在建立 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;
}
}
}

最佳答案

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

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

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

如果 RemoteCertificateChainErrors 被设置,那么 chain 对象将指出它无效的原因(有些东西已经过期,根不可信,以及更多潜在的问题).

因此,最简单的答案(在未注册回调之后)是return errors == SslPolicyErrors.None;

关于c# - 进行 SSL 连接时需要主机名验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55938578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com