Xamarin-Android-手动验证服务器的SSL证书ModernHttpClient

时间:2018-08-09 15:39:30

标签: ssl xamarin xamarin.forms xamarin.android

我正在尝试获取服务器的SSL证书并手动对其进行验证。我似乎无法使用任何一个NativeMessageHandler(ModernHttpClient)来工作。

这是请求代码:

var handler = (HttpClientHandler)Locator.CurrentMutable.GetService(typeof(HttpClientHandler));
var discoveryClient = new DiscoveryClient(Config.ApiBaseUrl.ToString(), handler);
disco = await discoveryClient.GetAsync();

如果我尝试使用ModernHttpClient / NativeMessageHandler

        ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) =>
        {
            var certAvailable = certificate != null;
            System.Diagnostics.Debug.WriteLine($"cert exists: {certAvailable}");
            if (certAvailable)
            {
                System.Diagnostics.Debug.WriteLine($"Issuer: {certificate.Issuer}");
            }

            return true;
        };

,但是在发送请求时,证书为null。为什么证书为空?

1 个答案:

答案 0 :(得分:0)

我在这里猜测,但是以我的经验Xamarin.Android无法处理异步调用:

disco =等待DiscoveryClient.GetAsync();