【问题标题】:Xamarin SSL/TLS Pinning with ServicePointManager使用 ServicePointManager 进行 Xamarin SSL/TLS 固定
【发布时间】:2017-01-06 06:34:04
【问题描述】:

我们正在使用 Xamarin 开发一个移动应用程序,该应用程序最初将在 Android 和 iOS 上运行,并计划在未来移植到 Windows 手机(如果使用它的 3 个人尖叫声足够大的话)。

正在传输的数据的性质以及此应用程序将允许的操作(SSO 到另一个读/写系统)我们希望采取一切措施尽可能保护数据传输层。

这自然使我们走上了 SSL/TLS 证书固定的道路(除了 API 调用本身的其他缓解措施),以保护客户端免于连接到 MITM 代理等。

我们操作 API 端点并完全控制证书,因此我们很乐意将公钥存储在应用程序中以进行固定,因为我们将能够在足够的时间内更新我们的证书并使用新的 pin 进行部署。所有证书都是有效的第 3 方签名证书(非自签名)。

不幸的是,使用 Xamarin 进行 SSL Pinning 似乎并不经常执行,因为我们发现很难找到已实现的示例。

OWASP 提供一些.NET sample SSL Pinning code,它使用 ServicePointManager.ServerCertificateValidationCallback 提供回调来检查 SSL pin;但没有特别提到它在 Xamarin 下工作。

对该代码的其他 Google 搜索通常会返回人们使用它来做与我们想要的完全相反的事情 - 他们使用它来减少 SSL 证书检查,而不是增加它!

I can see one answer 表明这种方法适用于 Android 和 iOS - 但我最感兴趣的是在 Xamarin(特别是 Xamarin.Forms)中使用它来固定 SSL/TLS 证书的特定体验。

【问题讨论】:

  • 我的 2cent:进入 x-plat 公钥固定是一个漫长的答案(尤其是在全球基于云的负载平衡端点中)。我们采用的方法的简短版本是:在 iOS 上,TrustKit 用于 NSURLSessionNSURLConnection 连接代表,在 Android 上,我们使用来自操作系统 KeystoreTrustManager 来保护 HttpsURLConnection仅到我们的全球端点。我们不再做 WinPhone。我们不会在 Xamarin 上使用 HTTPClient,也不会在任何平台上为以安全为中心的客户端使用 Xamarin 的 HTTPClient“本机”提供程序方法,故事要长得多

标签: security ssl xamarin xamarin.ios


【解决方案1】:

我已使用 ServicePointManager.ServerCertificateValidationCallback 验证 SSL/TLS 密钥固定在 Android 上有效(尽管此时仅在模拟器中)

【讨论】:

  • AFAIK 与默认的 Mono HttpClient 实现配合良好,但不适用于 NSUrlSessionHandlerAndroidClientHandler。你最终选择了哪条路?
  • 原谅我,但我不确定我是否理解这个问题。为什么我们需要改变?它们是否比默认设置更快/更好/更安全?他们有不同的 TLS 固定实现吗?
  • 啊,我明白你现在的意思了。 Android 当前正在使用 AndroidClientHandler,并且使用 ServicePointManager.ServerCertificateValidationCallback 实现的 TLS 固定似乎按预期工作 - 通过调试器运行时,它会按预期检查证书。
  • 我目前的观点:ModernHttpClient 在正确配置的情况下(通过构造函数参数)可以在 iOS 和 Android 上进行固定。 Mono 的默认 HttpClient 也是如此,它通过使用 ServicePointManager.ServerCertificateValidationCallback 的行为符合预期。我没有开始工作的是 NsUrlSessionHandler。但我可以将固定添加到 AndroidClientHandler:gist.github.com/aspnetde/8df8d0e6c02c3d847db1cd2a8823b208
猜你喜欢
  • 1970-01-01
  • 2018-01-17
  • 2020-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
相关资源
最近更新 更多