【发布时间】:2017-06-06 20:25:52
【问题描述】:
我知道ServicePointManager.ServerCertificateValidationCallback 不再存在于 .Net Core 中,而是替换为:
using(var handler = new System.Net.Http.HttpClientHandler())
{
using (var httpClient = new System.Net.Http.HttpClient(handler))
{
handler.ServerCertificateCustomValidationCallback = (request, cert, chain, errors) =>
{
return true;
};
}
}
然而,我们目前正在使用 ServiceStack.Core 库,据我所知,它既不公开这样的属性,也不公开处理程序本身。
如何告诉 ServiceStack 客户端绕过这段代码中的 ssl 验证?
using(var client = new JsonServiceClient("https://www.google.com"))
{
var response = client.Get("/results");
}
如果有办法,这在 Windows 和 Linux 上是否同样有效?
【问题讨论】:
-
“绕过 SSL 证书验证...” - 听起来很糟糕。它将您的应用程序移动到The most dangerous code in the world: validating SSL certificates in non-browser software 的领域。也许您应该将其改写为“如何执行自定义验证...”,然后执行对您的应用有意义的检查。
-
@jww “世界上最危险的代码”对我来说听起来非常夸张,尤其是在没有上下文的情况下。如果您正在编写一个使用自签名证书访问内部服务的工具怎么办?
-
如果您有自签名证书,则可以对其进行验证。没有必要放弃或避免验证。您甚至可以跳过证书验证并跳入公钥固定。在固定的情况下,证书只是一个演示细节,您所需要的只是主机的公钥来识别它。我在想你可能问错了问题,但我知道的不够肯定。也许您应该退后一步,问一些问题,例如如何在您的服务中使用自签名证书。
标签: c# linux servicestack .net-core