我们有一个Xamarin.Forms
当前为.NET Standard 2.0 编译的项目,用于共享项目Android
。iOS
UWP
通信是通过WCF
服务合同执行的。
为了固定证书,我们按照示例实现了以下代码。这在确保在其项目属性下使用必要的实现时Android
和之后都能正常工作。iOS
HttpClient
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;
private bool ValidateServerCertificate(object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
// Make sure we have a certificate to check.
if (certificate == null)
{
return false;
}
if (sslPolicyErrors != SslPolicyErrors.None)
{
return false;
}
return this.KnownKeys.Contains(certificate.GetCertHashString(),
StringComparer.Ordinal);
}
UWP
然而事实证明是相当顽固的。我无法在通信的任何阶段触发回调。
我还研究了实现我们自己的X509CertificateValidator
并将其提供给WCF
配置,但这也无济于事。
问题
- 我是否需要/我是否能够像您一样指定一个
HttpClient
实现,并且可以解决这个问题?UWP
Android
iOS
- 我目前还缺少另一种方法吗?