gpt4 book ai didi

c# - Request.HttpContext.Connection.ClientCertificate 始终为 null

转载 作者:行者123 更新时间:2023-11-30 12:20:01 32 4
gpt4 key购买 nike

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

在 Controller 中,我尝试获取客户端证书,如下所示:

var callerCertificate = Request.HttpContext.Connection.ClientCertificate;

我总是得到callerCertificatenull。我已尝试 await Request.HttpContext.Connection.GetClientCertificateAsync() ,结果相同 null

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

WebHost.CreateDefaultBuilder(args)
.UseKestrel()
.UseStartup<Startup>()
.UseSerilog();

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

enter image description here

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

var cred = new CertificateCredentials(_deviceCertificate)
...
await this.cred.ProcessHttpRequestAsync(_httpRequest, cancellationToken).ConfigureAwait(false);

最佳答案

您可以尝试直接使用 HttpClient 添加证书,而不是使用 Microsoft.Rest.CertificateCredential

var clientHandler = new HttpClientHandler();
clientHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
clientHandler.ClientCertificates.Add(_deviceCertificate);

var client = new HttpClient(clientHandler);
var result = client.GetAsync("https://yourservice").GetAwaiter().GetResult();

您可能还需要配置 SSL 协议(protocol)(SSL2、SSL3、TLS 等):

clientHandler.SslProtocols = SslProtocols.Tls;

关于c# - Request.HttpContext.Connection.ClientCertificate 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53589523/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com