我在本地使用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时,它仍然显示不安全。
我在这里想念什么?我还有什么需要配置的吗?
答案 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授权。
更新2:有关该主题的新文章:https://www.hanselman.com/blog/DevelopingLocallyWithASPNETCoreUnderHTTPSSSLAndSelfSignedCerts.aspx