2016-06-09 167 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