【问题标题】:Webpage sometimes cannot connect to other url with SSL网页有时无法使用 SSL 连接到其他 url
【发布时间】:2018-02-19 08:07:13
【问题描述】:

我们有一个应用程序(WebAPI,我们将其命名为“X”)在 Windows Server 2012 R2 上的 IIS 上运行。有时“X”无法连接到网络上的其他独立 API。我们得到了错误:

底层连接已关闭:无法建立信任 SSL/TLS 安全通道的关系。

远程证书根据验证无效 过程。

我进行了一些测试,同时“X”无法下载https://google.com(使用WebClient 类),但我可以使用当前服务器上的网络浏览器浏览它。

我还尝试忽略整个应用程序的服务器证书错误(下面的代码),但它也没有帮助。

protected void Application_Start()
{    
    ServicePointManager.ServerCertificateValidationCallback += 
        (sender, cert, chain, sslPolicyErrors) => true;
}

我的客户连接到“X”没有问题。此外,当一台服务器上发生错误时,我能够成功连接(例如https://google.com)具有不同“X”实例的其他服务器上。

可能出了什么问题?

【问题讨论】:

    标签: c# ssl webclient


    【解决方案1】:

    听起来您的 IIS Web 应用程序是在无权访问计算机上的证书的用户上下文下运行的。但是,浏览器在具有访问权限的不同用户上下文下运行。这解释了您的测试结果。

    如果用户确实有权访问证书,那么您可能需要从独立 API 下载证书。看到这个:http://brainof-dave.blogspot.com.au/2008/08/remote-certificate-is-invalid-according.html

    也请查看以下资源: https://blogs.msdn.microsoft.com/saurabh_singh/2009/07/02/required-permissions-when-calling-a-web-service-using-client-certificate-for-authentication-in-an-asp-net-web-application/

    https://technet.microsoft.com/en-us/library/cc772237(v=ws.10).aspx

    【讨论】:

    • 谢谢唐纳德,但这是否意味着我必须为我们在每个运行应用程序的每个服务器实例上使用的每个 API 手动添加证书?另外我认为我无法获得google.comgraph.windows.net 的证书文件
    猜你喜欢
    • 2018-01-21
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多