【问题标题】:Trusting Self-Signed Certificate using HttpClient使用 HttpClient 信任自签名证书
【发布时间】:2016-06-09 09:27:56
【问题描述】:

我按照this 教程创建了一个自签名 CA 证书,然后创建了一个基于 CA 证书的自签名 SSL 证书。然后我在 IIS 中安装 SSL 证书以通过本地 IP 地址访问我的内部站点,例如10.0.0.1。我想使用HttpClient 向网站发出如下请求:

using (var httpClient = new HttpClient())
{
    var text = await httpClient.GetStringAsync("https://52.19.32.61:5010");
}

我已将我的自签名 CA 证书添加到本地计算机受信任的根证书中,但是,我仍然收到以下异常(告诉我关闭 SSL 验证的任何答案都没有帮助。):

System.Net.Http.HttpRequestException:发送时出错 请求。 System.Net.WebException:底层连接是 关闭:无法为 SSL/TLS 安全建立信任关系 渠道。 System.Security.Authentication.AuthenticationException: 根据验证程序,远程证书无效。

【问题讨论】:

标签: c# .net ssl ssl-certificate dotnet-httpclient


【解决方案1】:

SelfSigned CA 必须位于服务器上的 LocalMachine\Root 存储中以及连接到服务器的任何客户端上。

SSL 证书应该具有客户端用来连接它的确切 DNS 名称。它可以在主题备用名称 (SAN) 扩展的证书中指定多个 DNS 名称。在您的情况下,您使用的是 IP 地址,所以要么

  • 您将 IP 地址放在 SAN 中或
  • 您在颁发 SSL 证书时使用您指定的 DNS 名称将 IP 地址放在 hosts 文件中,并在 HttpClient 中使用此 DNS 名称

您可以考虑使用XCA 来颁发您的证书。它有很好的 GUI 并且建立在 OpenSSL 之上。它具有用于 CA 和 SSL 服务器的预定义模板。更多信息请参阅文档here。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 2016-11-29
    • 2019-09-03
    • 1970-01-01
    • 2012-12-07
    相关资源
    最近更新 更多