首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET核心Kestrel WebServer从文件中加载自签名根证书,但仍然需要在受信任的根证书颁发机构存储中。

ASP.NET核心Kestrel WebServer从文件中加载自签名根证书,但仍然需要在受信任的根证书颁发机构存储中。
EN

Stack Overflow用户
提问于 2022-12-01 11:04:07
回答 1查看 45关注 0票数 0

我有一个带有Kestrel的ASP.NETCore 6应用程序,它需要客户端应用程序和服务器之间的mTLS。我使用powershell中的为客户端创建了自签名根证书和子证书。下面是将根证书显式加载到Kestrel的方式:

代码语言:javascript
复制
var rootCertFile ="xxx.pfx";
var rootCertPw = "abc";
X509Certificate2 rootCert = new X509Certificate2( rootCertFile,  rootCertPw);

webBuilder.ConfigureKestrel(o =>
{
    o.ConfigureHttpsDefaults(o =>
    {
        o.ServerCertificate = rootCert;
        o.ClientCertificateMode = ClientCertificateMode.RequireCertificate;
    });
});

webBuilder.UseKestrel(o =>
{
    o.Listen(IPAddress.Parse(myHttpsEndPointIpAddr), myHttpsEndPointPort,
        listenOptions =>
        {
            listenOptions.UseHttps();
        });
    o.Listen(IPAddress.Parse(myHttpEndPointIpAddr), myHttpEndPointPort);
});

如果某个客户端(例如curl或postman)调用(使用根签名的子证书)某些https端点,则如果根证书不存在于本地计算机的受信任根证书颁发机构证书库中,则客户端将收到错误并拒绝调用。以下是客户端看到的错误:

代码语言:javascript
复制
* TLSv1.2 (IN), TLS header, Unknown (21):
* TLSv1.2 (IN), TLS alert, unknown CA (560):
* OpenSSL SSL_read: error:0A000418:SSL routines::tlsv1 alert unknown ca, errno 0
* Failed receiving HTTP2 data
* OpenSSL SSL_write: SSL_ERROR_ZERO_RETURN, errno 0
* Failed sending HTTP2 data

一旦根证书被添加到本地计算机的受信任根证书颁发机构证书存储区,rest调用就会成功。如果Kestrel直接加载根证书,为什么需要将根自签名证书安装到受信任的根证书颁发机构证书存储区?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-12-02 06:00:39

中我们可以看到Recognizing client certificates有两种方式。

首先,服务器没有将自签名客户端证书识别为有效证书.这可以通过以下方法解决: 1.将所有客户端证书(或将它们全部签名的根CA )添加到操作系统的受信任证书存储区;或者2.向kestrel添加ClientCertificateValidation回调以确定证书是否被接受或拒绝。

来自安装在受信任的根目录中

根证书需要在您的主机系统上被信任。默认情况下,没有由证书颁发机构创建的根证书将不受信任。有关如何信任Windows上的根证书的信息,请参阅此问题。

这是一个例子:在Kestrel .NET核中加载中间CA签名的SSL证书的正确方法

阅读安装受信任的根证书受信任的根证书颁发机构证书存储以了解更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74640857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档