我正在尝试使用Kestrel将SSL添加到本地运行的.NET 7 API中。我使用来自官方CA的通配符证书,其CN和SAN *. mycompany.com。我从一个.pfx文件中加载证书,该文件包含通配符、中间证书和根证书。
这是我如何设置服务器的:
.UseKestrel(
options =>
{
var lovCertificate = CertificateManager.GetCertificateFromFile("wildcard.mycompany.com2024");
options.AddServerHeader = false;
options.Listen(IPAddress.Any, 5001, listenOptions =>
{
listenOptions.UseConnectionLogging();
listenOptions.Protocols = HttpProtocols.Http1AndHttp2;
if (lovCertificate != null) listenOptions.UseHttps(httpsOptions =>
{
httpsOptions.ServerCertificateSelector = (context, dnsName) =>
{
return CertificateManager.GetCertificateFromFile("wildcard.mycompany.com2024");
};
});
});
}
)
//.UseUrls("https://" + "log.mycompany.com" + ":5001")
.UseStartup<Startup>();
字符串
我使用Windows hosts文件将127.0.0.1和localhost链接到域log.mycompany.com。
当我在Chrome中访问https://localhost:5001时,我会看到通常的警告屏幕,这是我预期会发生的错误:
NET::ERR_CERT_COMMON_NAME_INVALID
当我转到https://log.mycompany.com:5001时,警告屏幕不会出现。但是绿色的锁还是没有显示,当我点击信息按钮时,它说:
您与此网站的连接不安全。
在边缘,它甚至说,没有提供证书。
我不明白为什么甚至没有出现警告或特定的错误消息,比如域名与证书的SAN不匹配。
在Firefox中,它工作得非常好,我可以看到整个信任链都是有效的。在Postman中,当向URL发出请求时,它也能正常工作,并且还将证书显示为受信任的。
1条答案
按热度按时间h7wcgrx31#
我的网络服务器没有返回网页。显然,Chrome在收到404时不会显示有效的https连接。添加Swagger后,我可以确认证书是有效的。