首页 > 解决方案 > Xamarin - Android - 手动验证服务器的 SSL 证书 ModernHttpClient

问题描述

我正在尝试获取服务器的 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;
        };

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

标签: sslxamarinxamarin.formsxamarin.android

解决方案


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

迪斯科 = 等待发现客户端.GetAsync();


推荐阅读