UWP ServicePointManager.ServerCertificateValidationCallback

问题描述 投票:4回答:1

我有一个Xamarin.Forms应用程序,该应用程序使用ServicePointManager.ServerCertificateValidationCallback类和方法来实现证书固定。在Android和iOS上,此方法没有问题,因为它将允许连接到已锁定证书密钥的预期服务,并禁止连接那些我没有的服务。

但是,在UWP上,无论证书密钥是否已固定,都允许所有连接。我已从证书验证方法中显式返回false,并且仍然允许连接。我确信已经调试并逐步通过了证书验证方法,因此正在执行检查。

即使我从验证检查中返回false,是什么导致连接继续进行?

ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertficate;
private static bool ValidateServerCertficate(
   object sender,
   X509Certificate certificate,
   X509Chain chain,
   SslPolicyErrors sslPolicyErrors
)
{
   return false;
}
c# xamarin xamarin.forms uwp .net-standard
1个回答
0
投票

我能够通过以下方式解决此问题:

  1. 在UWP项目中,双击Package.appxmanifest文件
  2. 在“声明”菜单下,从“可用声明”下拉列表中选择“证书”>
  3. 单击添加按钮
  4. 选择独占信任选项
  5. 这会将以下xml放入Package.appxmanifest文件:

<Extensions>
   <Extension Category="windows.certificates">
     <Certificates>
       <TrustFlags ExclusiveTrust="true" />
     </Certificates>
   </Extension>
</Extensions>
© www.soinside.com 2019 - 2024. All rights reserved.