我们正在使用 Xamarin 开发一款移动应用程序,最初将在 Android 和 iOS 上运行,并计划将来移植到 Windows Phone(如果使用它的 3 个人尖叫得足够大声的话)。
正在传输的数据的性质以及该应用程序将允许的操作(SSO 到另一个读/写系统)我们希望采取一切措施尽可能地保护数据传输层。
当然,这让我们走上 SSL/TLS 证书固定的道路(除了 API 调用本身的其他缓解措施之外),以保护客户端免于连接到 MITM 代理等。
我们操作 API 端点并完全控制证书,因此我们很乐意在应用程序中存储公钥以进行固定,因为我们将能够在足够的时间内更新我们的证书并使用新的 pin 进行部署。所有证书都是有效的第三方签名证书(非自签名)。
不幸的是,使用 Xamarin 进行 SSL Pinning 似乎并不经常执行,因为我们发现很难找到实现的示例。
OWASP https://www.owasp.org/提供一些.NET 示例 SSL 固定代码 https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning#.Net它使用 ServicePointManager.ServerCertificateValidationCallback 提供回调来检查 SSL pin;但没有具体提及它在 Xamarin 下工作。
对该代码的其他 Google 搜索通常会返回人们使用它来执行与我们想要的完全相反的操作 - 他们使用它减少 SSL 证书检查,而不是增加它!
我可以看到一个答案 https://stackoverflow.com/a/27115310/1723275这表明这种方法适用于 Android 和 iOS - 但我最感兴趣的是在 Xamarin(特别是 Xamarin.Forms)中使用此方法来固定 SSL/TLS 证书的具体体验。
我已经使用 ServicePointManager.ServerCertificateValidationCallback 验证了 SSL/TLS 密钥固定在 Android 上有效(尽管目前仅在模拟器中)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)