首页 文章

使用HttpClient信任自签名证书

提问于
浏览
0

我按照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安全通道 Build 信任关系 . System.Security.Authentication.AuthenticationException:根据验证过程,远程证书无效 .

1 回答

  • 1

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

    SSL证书应具有客户端将用于连接到它的确切DNS名称 . 它可以在主题备用名称(SAN)扩展中的证书中指定多个DNS名称 . 在您的情况下,您正在使用IP地址

    • 您将IP地址放在SAN或

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

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

相关问题