我有一个使用第三方 WCF 服务的 .NET Core 3 Web 服务。该服务托管在使用我需要信任的私有根证书的服务器上,但前提是它有效(未过期且具有有效签名)。
我正在使用 Azure 应用服务。Azure 在其较低层的服务计划中不支持自定义证书颁发机构。隔离计划支持它,但它的成本要高出 5 倍,并且对于信任根证书的单一目的来说会是过度的。
我正在寻找解决方法。有使用 HttpClient 的解决方案HttpClientHandler.ServerCertificateCustomValidationCallback
。但是,WCF 引用不使用 HttpClient;它使用基于 ClientBase 的自动生成的客户端代码。
然后有一些较旧的解决方案可以完全禁用 .NET 中的证书验证,System.Net.ServicePointManager.ServerCertificateValidationCallback
但 .NET Core 不支持。即使是这样,我也不想完全禁用验证;我希望它仍然验证一切,除了它应该信任特定的根证书。
有没有办法将受信任的根证书提供给基于 ClientBase 的客户端,或者拦截其验证机制但不会引入严重的安全漏洞?我不想开始盲目地接受任何随机证书。