C# 使用HttpClient信任自签名证书

C# 使用HttpClient信任自签名证书,c#,.net,ssl,ssl-certificate,dotnet-httpclient,C#,.net,Ssl,Ssl Certificate,Dotnet Httpclient,我按照教程创建了一个自签名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证书添加

我按照教程创建了一个自签名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: 根据验证过程,远程证书无效


自签名CA必须位于服务器和连接到服务器的任何客户端上的LocalMachine\Root存储中

SSL证书应具有客户端将用于连接到它的确切DNS名称。它可以在使用者替代名称(SAN)扩展的证书中指定多个DNS名称。在您的情况下,您使用的是IP地址,因此

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

您可以考虑使用证书颁发。它有很好的GUI,并且构建在OpenSSL之上。它具有CA和SSL服务器的预定义模板。有关详细信息,请参阅文档。

自签名CA必须位于服务器和连接到服务器的任何客户端上的LocalMachine\Root存储中

SSL证书应具有客户端将用于连接到它的确切DNS名称。它可以在使用者替代名称(SAN)扩展的证书中指定多个DNS名称。在您的情况下,您使用的是IP地址,因此

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

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

您的问题与此类似:我没有要求忽略证书错误。您的问题与此类似:我没有要求忽略证书错误。