【问题标题】:Correct way of loading SSL certificate signed by Intermediate CA in Kestrel .NET Core在 Kestrel .NET Core 中加载由中间 CA 签名的 SSL 证书的正确方法
【发布时间】:2019-10-21 03:57:22
【问题描述】:

我正在使用 .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 和 Leaf,就像人们期望的那样:

openssl s_client -showcerts -connect google.com:443

【问题讨论】:

    标签: c# ssl .net-core x509certificate kestrel


    【解决方案1】:

    我最近遇到过这种情况,发现托管 Web 服务的服务器(在本例中为 debian)除了根证书外,还需要对中间证书的显式信任。没有这个,它只会发送主题证书,但是当我将中间体直接添加到信任时,它开始正常工作。

    【讨论】:

    • 这当然会让交流发生,但这样做实际上很奇怪。 PFX 包含所需的一切,因此无需手动将中间件和根证书添加到“存储”!
    • 是的,你是 100% 正确的。根信任中唯一需要的是根证书本身。中间证书应包含在主题证书中并由网络服务器提供。 This turned out to be a bug in Kestrel:
    猜你喜欢
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 2020-05-12
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多