2016-06-09 165 views
0

我已按照this教程创建自签名CA证书,然后创建基于CA证书的自签名SSL证书。然后,我在IIS中安装了SSL证书,以通过本地IP地址访问我的内部站点。 10.0.0.1。我想用HttpClient提出请求的网站如下:使用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:根据验证过程, 远程证书无效。

+0

您的问题是类似于此:http://stackoverflow.com/questions/2675133/c-sharp-ignore-certificate-errors – Robo

+0

我**不**要求忽略证书错误。 –

回答

1

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

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

  • 您将IP地址在SAN或
  • 你把IP地址中的主机与您指定的DNS名称的文件签发SSL证书时,在使用这个DNS名称HttpClient

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