我有一个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;
}
我能够通过以下方式解决此问题:
这会将以下xml放入Package.appxmanifest文件:
<Extensions>
<Extension Category="windows.certificates">
<Certificates>
<TrustFlags ExclusiveTrust="true" />
</Certificates>
</Extension>
</Extensions>