我正在使用.NET Core 2.1.1在我的Kestrel Linux服务器上设置SSL。
SSL 证书由中间 CA 签名。
PFX 包含中间和根 CA 证书。
我将 pfx 文件作为 X509Certificate2 对象加载,并将其用于服务器证书。
似乎是我设置的方式,中间 CA 不是作为握手的一部分发送的,而是只发送叶子(这很顽皮(。
return WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options =>
{
options.Listen(IPAddress.Any,443, listenOptions =>
{
listenOptions.UseHttps("ssl.pfx", "password123");
});
}
)
.Build();
所以我执行这个命令,它只显示叶子,而不显示中间
:openssl s_client -showcerts -connect myserver:443
我希望它包括中间的ca和叶子,就像人们期望的那样:
openssl s_client -showcerts -connect google.com:443
我最近遇到了这个问题,发现托管 Web 服务的服务器(在本例中为 debian(除了根证书之外,还需要对中间证书的明确信任。 如果没有这个,它只会发送主题证书,但是当我将中间人直接添加到信任中时,它开始正常工作。