证书固定和SSL

时间:2018-12-28 10:27:49

标签: android security https mobile-application certificate-pinning

我正在尝试学习制作安全的移动应用程序。我很好奇,如果从手机到服务器的网络呼叫使用https,是否需要证书固定?

2 个答案:

答案 0 :(得分:0)

是的,您应该将其另存为原始文件到应用程序的文件夹中,并使用它来调用服务器的请求。 请注意,如果您具有自签名证书,则应强制使用受信任的权威机构颁发的证书。

答案 1 :(得分:0)

  

我很好奇,如果从手机到服务器的网络呼叫使用https,我们是否需要证书固定?

https确保在移动应用程序和API服务器之间传输的数据经过加密,并且不会被第三方窃听,从而部分地防止了它受到中间人攻击。

所以我之所以这样说,部分是因为攻击者可以诱使用户安装自定义ssl证书,以便他们使用免费的wifi。这通常是通过伪造的wifi俘虏门户网站完成的,您必须登录才能获得免费的wifi,例如在机场,火车等地方发现的免费wifi。如果攻击者成功欺骗了用户,则所有流量都将通过攻击者计算机,尽管它是https形式,但一旦移动应用使用攻击者自定义证书就可以解密,但是攻击者在与API服务器通信时将始终使用原始证书,因此,API,服务器,移动应用或用户注意通信被拦截,甚至被篡改。

因此,使用证书固定会阻止发生任何类型的中间人攻击,即使移动应用程序用户是故意解密的攻击者的那些人也是自己的流量,以便对与API服务器以获取足够的知识来对其发起攻击。

现在该是个坏消息了……当攻击者访问或控制移动设备时,可以绕过证书固定。 This article指导您使用xPosed之类的框架使用和绕过证书固定的方法,该框架将拦截调用以验证证书,从而绕过验证过程。

那么我应该使用证书固定吗?是的,您应该这样做,因为这是一层防御,并且需要更多努力才能使攻击者对您的移动应用进行逆向工程,所以他可能认为这不值得,但是如果他认为值得,那么您可能希望在Google中进行搜索用于移动应用程序证明解决方案,以进一步保护移动应用程序与API服务器之间的通信。

但是请记住,虽然证书固定很容易在您的移动应用程序中实现,但这可能是维护工作的噩梦。请务必阅读我之前引用的有关绕过证书锁定的链接中的锁定是一个噩梦部分。

相关问题