Windows不接受自签名SSL证书

时间:2018-07-25 14:29:14

标签: c# asp.net-core https asp.net-core-2.0 kestrel-http-server

我在本地使用IIS创建并导出了自签名证书。结果是一个PFX文件。

我已将其加载到我的ASP.NET Core解决方案中,并像下面这样旋转Kestrel:

var certificatePath = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), "cert.pfx"));
var certificate = new X509Certificate2(certificatePath, "certpass");

HostWeb = builder
    .UseKestrel(options =>
    {
        options.Listen(IPAddress.Loopback, 44321, listenOptions =>
        {
            listenOptions.UseHttps(certificate);
        });
    })
    .UseUrls("https://localhost:44321")
    .UseEnvironment("Test").Build();
HostWeb.Start();

当我在此Web服务器上运行Chrome时,它仍然显示不安全。

我在这里想念什么?我还有什么需要配置的吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

从Chrome导出证书,方法是依次单击“不安全”,“证书”,“详细信息”选项卡和“复制到文件...”,然后选择一个文件以将证书写入磁盘。

然后,双击证书,然后单击“安装证书...”,将“存储位置”保留为“当前用户”,选择“将所有证书放置在以下存储中”,选择“受信任的根证书”权威”,然后完成向导。

您收到的警告将消失。

注意:仅应将其应用于开发环境。

答案 1 :(得分:0)

我相信您需要在操作系统级别上注册此证书,以便将其视为有效证书。默认情况下,不会自签名证书。我使用该链接来完成此操作:https://www.humankode.com/asp-net-core/develop-locally-with-https-self-signed-certificates-and-asp-net-core

尤其是该部分:

# import the pfx certificate
Import-PfxCertificate -FilePath $pfxFilePath Cert:\LocalMachine\My -Password $pfxPassword -Exportable

# trust the certificate by importing the pfx certificate into your trusted root
Import-Certificate -FilePath $cerFilePath -CertStoreLocation Cert:\CurrentUser\Root

# optionally delete the physical certificates (don’t delete the pfx file as you need to copy this to your app directory)
# Remove-Item $pfxFilePath
Remove-Item $cerFilePath

更新:您的代码正在设置服务器在安全连接初始化(握手)期间将向客户端提供的证书。但是随后,您的客户必须能够将此证书识别为有效证书,他需要信任它,以信任发出此证书的授权。例如,您信任stackoverflow,因为您信任提供服务器将其证书提交给客户端的证书的DigiCert授权。

enter image description here

更新2:有关该主题的新文章:https://www.hanselman.com/blog/DevelopingLocallyWithASPNETCoreUnderHTTPSSSLAndSelfSignedCerts.aspx