在我的 .Net 6.0 应用程序中,我使用 HttpClient 连接到使用 SSL/TLS 保护的远程 API 服务。托管我的应用程序的服务器在本地 Windows Server 2016 环境中运行,其中所有传出流量都需要在外部防火墙设备上列入白名单。我明确允许到远程 API 端点地址的传出连接,但不允许流量到任何其他地址。
我使用 HttpClient 的默认行为,这意味着我没有为 ServerCertificateValidationCallback 属性提供自定义实现。
令我惊讶的是,与远程端点的连接工作完美,这是我没想到的,因为我没有将远程 API 的 SSL 证书颁发机构的 CRL 或 OCSP 端点的流量列入白名单。他们使用的证书是常规的商业证书。我还使用 telnet 验证了我无法从运行代码的计算机连接到 CRL 和/或 OCSP 端点,
我的印象是 HttpClient 在建立与远程端点的连接之前验证服务器证书以检查是否:
如果希望进行验证,则需要明确指定
HttpClientHandler.CheckCertificateRevocationList = true
感谢@Evk为我指明了正确的方向