ssl - 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;
};
但是在发送请求时,证书为空。为什么证书为空?
解决方案
我在这里猜测,但根据我的经验,Xamarin.Android 无法处理异步调用:
迪斯科 = 等待发现客户端.GetAsync();
推荐阅读
- powerbi - 根据位置列和日期找出出发地和目的地
- ruby - 如何在 rspec 中编写自定义 MessageExpectation?
- php - Symfony 3.4.11 学说注意:未初始化的字符串偏移量:0
- c# - 带有asp.net的MySql有错误
- javascript - 附加元素未按预期工作
- ghostscript - 将 pdf 转换为图像 - 防止文本输出
- javascript - 调整php函数图像的高度 - wordpress
- hive - 如何通过 SERDE 将通用文件摄取构建到 Hive 中?
- hadoop - Confluent HDFS 连接器:当没有 hdfs 文件时,如何从最新的偏移量中读取?
- robotframework - 我们如何将机器人框架 rflint 的静态分析工具应用于所有存储库?