我按照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 回答
SelfSigned CA必须位于服务器上的LocalMachine \ Root存储中以及连接到服务器的任何客户端上 .
SSL证书应具有客户端将用于连接到它的确切DNS名称 . 它可以在主题备用名称(SAN)扩展中的证书中指定多个DNS名称 . 在您的情况下,您正在使用IP地址
您将IP地址放在SAN或
您将IP地址放在hosts文件中,并使用您在颁发SSL证书时指定的DNS名称,并在HttpClient中使用此DNS名称
您可以考虑使用XCA颁发证书 . 它有很好的GUI, Build 在OpenSSL之上 . 它具有CA和SSL服务器的预定义模板 . 更多信息,请参阅文档here .