UWP ServicePointManager.ServerCertificateValidationCallback
UWP ServicePointManager.ServerCertificateValidationCallback
我有一个 Xamarin.Forms 应用程序,它使用 ServicePointManager.ServerCertificateValidationCallback class 和方法实现证书固定。在 Android 和 iOS 上,这没有问题,因为它将允许连接到其证书密钥已固定的预期服务,并禁止连接那些我没有固定的服务。
但是,在 UWP 上,无论证书密钥是否已固定,都允许所有连接。我已经从证书验证方法中明确返回 false,并且仍然允许连接。我确定正在执行检查,因为我已经调试并逐步完成了证书验证方法。
即使我从验证检查中返回 false,可能导致连接继续进行的原因是什么?
ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertficate;
private static bool ValidateServerCertficate(
object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors
)
{
return false;
}
我通过以下方式解决了这个问题:
- 在 UWP 项目中,双击 Package.appxmanifest 文件
- 在声明菜单下,select 可用声明下拉列表中的证书
- 单击“添加”按钮
- Select 独家信任选项
这会将以下 xml 放入 Package.appxmanifest 文件:
<Extensions>
<Extension Category="windows.certificates">
<Certificates>
<TrustFlags ExclusiveTrust="true" />
</Certificates>
</Extension>
</Extensions>
我有一个 Xamarin.Forms 应用程序,它使用 ServicePointManager.ServerCertificateValidationCallback class 和方法实现证书固定。在 Android 和 iOS 上,这没有问题,因为它将允许连接到其证书密钥已固定的预期服务,并禁止连接那些我没有固定的服务。
但是,在 UWP 上,无论证书密钥是否已固定,都允许所有连接。我已经从证书验证方法中明确返回 false,并且仍然允许连接。我确定正在执行检查,因为我已经调试并逐步完成了证书验证方法。
即使我从验证检查中返回 false,可能导致连接继续进行的原因是什么?
ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertficate;
private static bool ValidateServerCertficate(
object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors
)
{
return false;
}
我通过以下方式解决了这个问题:
- 在 UWP 项目中,双击 Package.appxmanifest 文件
- 在声明菜单下,select 可用声明下拉列表中的证书
- 单击“添加”按钮
- Select 独家信任选项
这会将以下 xml 放入 Package.appxmanifest 文件:
<Extensions>
<Extension Category="windows.certificates">
<Certificates>
<TrustFlags ExclusiveTrust="true" />
</Certificates>
</Extension>
</Extensions>