C# 在Kestrel.NET内核中加载由中间CA签名的SSL证书的正确方法

C# 在Kestrel.NET内核中加载由中间CA签名的SSL证书的正确方法,c#,ssl,.net-core,x509certificate,kestrel,C#,Ssl,.net Core,X509certificate,Kestrel,我正在使用.NET Core 2.1.1在Kestrel Linux服务器上设置SSL SSL证书由中间CA签名 PFX包含中间CA证书和根CA证书 我将pfx文件作为X509Certificate2对象加载,并将其用于服务器证书 这似乎是我设置的方式,中间CA不作为握手的一部分发送,只发送叶子(这是非常顽皮的) 我希望它包括中间ca和leaf,正如人们希望的那样: openssl s_client -showcerts -connect google.com:443 我最近遇到了这种情况,发

我正在使用.NET Core 2.1.1在Kestrel Linux服务器上设置SSL

SSL证书由中间CA签名

PFX包含中间CA证书和根CA证书

我将pfx文件作为X509Certificate2对象加载,并将其用于服务器证书

这似乎是我设置的方式,中间CA不作为握手的一部分发送,只发送叶子(这是非常顽皮的)

我希望它包括中间ca和leaf,正如人们希望的那样:

openssl s_client -showcerts -connect google.com:443

我最近遇到了这种情况,发现托管web服务的服务器(本例中为debian)除了根证书外,还需要对中间证书的明确信任。如果没有这一点,它将只发送主题证书,但当我将中间证书直接添加到信任中时,它开始正常工作。

这当然会让交流发生,但这样做其实很奇怪。PFX包含所需的一切,因此,不需要手动将中间证书和根证书添加到“存储”中!是的,你完全正确。根信任中唯一需要的是根证书本身。中间人应包括在主题证书中,并由网络服务器提供。
openssl s_client -showcerts -connect myserver:443
openssl s_client -showcerts -connect google.com:443