SSL证书在Chrome/Edge中不起作用,但在Postman的Firefox/GET中可以

vfwfrxfs  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(166)

我正在尝试使用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发出请求时,它也能正常工作,并且还将证书显示为受信任的。

h7wcgrx3

h7wcgrx31#

我的网络服务器没有返回网页。显然,Chrome在收到404时不会显示有效的https连接。添加Swagger后,我可以确认证书是有效的。

相关问题