Azure上的ASP.NET Core"无法识别客户端证书凭据"

时间:2018-04-04 19:46:33

标签: c# azure ssl asp.net-core client-certificates

我的设置类似于此SO post

我的ASP.NET Web App连接到需要客户端证书的第三方服务。开始一个多租户应用程序,我为每个客户提供了一个存储在数据库中的客户端证书。跳过代码从数据库中检索证书,我这样做:

  HttpClientHandler httpClientHandler = new HttpClientHandler();
  X509Certificate2 customerCertificate = new X509Certificate2(certificateFromDatabase, "", X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);
  httpClientHandler.ClientCertificates.Add(customerCertificate);
  httpClientHandler.ServerCertificateCustomValidationCallback += ServerCertificateValidationCallback;
  httpClient = new HttpClient(httpClientHandler);

此代码在我的Windows 10开发PC上完美运行。 发布到Azure Web App时,它会失败20%的时间,并出现以下错误:

  

System.Net.Http.HttpRequestException:发送请求时发生错误。 System.Net.Http.WinHttpException:无法识别客户端证书凭据。

我已经编写了一种尽可能快地调用第三方服务的测试方法,每次都会切换证书。这个可以在我的PC上运行,在Azure上失败80%(与上面相同的错误)。

上面提到的SO帖子上提出的解决方案不适用于我:我应该加载证书的hundreads。

要解决问题,执行数据包捕获可能很有用。 但是,AFAIK,Azure Web Apps无法做到这一点(可以使用虚拟机和网络观察器完成)。

0 个答案:

没有答案