我们正在开发一款基于Xamarin的移动应用程序,该应用程序最初将在Android和iOS上运行,并计划在未来移植到Windows手机(如果使用它的3人大声尖叫)。
传输的数据的性质以及该应用程序允许的操作(SSO进入另一个读/写系统)我们希望尽可能地采取每一步来保护数据传输层。
当然,这会让我们沿着SSL / TLS证书固定的路径(除了API调用本身的其他缓解措施)来保护客户端不连接到MITM代理等。
我们操作API端点并完全控制证书,因此我们很乐意将公钥存储在应用程序中,因为我们将能够更新我们的证书并在足够的时间内使用新的引脚进行部署。所有证书均为有效的第三方签名证书(非自签名)。
不幸的是,似乎没有经常使用Xamarin执行SSL Pinning,因为我们发现很难找到实现的示例。
OWASP提供一些使用ServicePointManager.ServerCertificateValidationCallback的.NET sample SSL Pinning code来提供回调来检查SSL引脚;但没有特别提到它在Xamarin下工作。
此代码的其他Google搜索通常会让使用它的用户与我们想要的完全相反 - 他们使用它来减少SSL证书检查,而不是增加它!
I can see one answer表明这种方法适用于Android和iOS - 但我最感兴趣的是在Xamarin中使用它的具体经验,特别是Xamarin.Forms,用于固定SSL / TLS证书。
答案 0 :(得分:0)
我已经使用ServicePointManager.ServerCertificateValidationCallback
验证了SSL / TLS密钥钉在Android上的工作方式(虽然此时仅在模拟器中)