Request.HttpContext.Connection.ClientCertificate 始终为 null

Tan*_*any 6 c# authentication azure asp.net-core

我在适用于 Linux 的 Azure 应用服务上部署了一个 ASP.Net 核心网站。

在控制器中,我正在尝试获取客户端证书,如下所示:

var callerCertificate = Request.HttpContext.Connection.ClientCertificate;
Run Code Online (Sandbox Code Playgroud)

我总是callerCertificate。我试过await Request.HttpContext.Connection.GetClientCertificateAsync()同样的结果null

我的网站虚拟主机创建如下所示:

WebHost.CreateDefaultBuilder(args)
                .UseKestrel()
                .UseStartup<Startup>()
                .UseSerilog();
Run Code Online (Sandbox Code Playgroud)

我还为网站(在 Azure 中)设置了 SSL 设置,如下所示:

在此处输入图片说明

客户端调用方是一个 net462 项目,用于Microsoft.Rest.CertificateCredentials将证书设置为 HTTP 请求。

var cred = new CertificateCredentials(_deviceCertificate)
...
await this.cred.ProcessHttpRequestAsync(_httpRequest, cancellationToken).ConfigureAwait(false);
Run Code Online (Sandbox Code Playgroud)

Tan*_*any 3

回答我自己的问题:我能够从标头获取客户端证书

字符串 clientCertFromHeader = Request.Headers["X-ARR-ClientCert"];

尽管如此,为什么 Request.HttpContext.Connection.ClientCertificate 不提供证书仍然是个谜。