如何在没有获得证书无效错误的情况下使用我自己的web api

时间:2015-02-26 15:55:45

标签: asp.net-mvc asp.net-web-api

我正在尝试调用和使用我自己的api,这与我的mvc应用程序在同一个解决方案中,默认情况下所有请求都被强制在https上运行:

我正在做以下事情:

using (var client = new HttpClient())
    {
        var productDetailUrl = Url.RouteUrl(
            "DefaultApi",
            new { httproute = "", controller = "ProductDetails", id = id },
            Request.Url.Scheme
        );
        var model = client
                    .GetAsync(productDetailUrl)
                    .Result
                    .Content.ReadAsAsync<ProductItems>().Result;

        return View(model);
    }

然而我收到以下错误:

The remote certificate is invalid according to the validation procedure

我知道我可以使用以下方法传递此问题,但这在生产环境中存在安全风险。

ServicePointManager
    .ServerCertificateValidationCallback += 
    (sender, cert, chain, sslPolicyErrors) => true;

1 个答案:

答案 0 :(得分:1)

您似乎正在与非信任的权威机构合作,可能是自签名的。

您可以将自签名证书安装到受信任的CA存储中。

这是一个link,解释了如何做到这一点。

如果已经信任,那么我猜你的API和网络应用程序有2个不同的域名,证书只发给其中一个。在这种情况下,您可能需要发布wild card certificate以与www.example.com(您是网络)或(api.example.com)合作。