详解移动应用中的证书锁定SSL Pinning
2023年3月10日
SSL Pinning翻译成中文是证书锁定、证书固定,主要作用是将服务器提供的SSL证书内置到移动端开发的APP客户端中,当客户端发起请求时,通过比对内置的证书和服务器端证书的内容,以确定这个连接的合法性。
证书锁定(SSL/TLS Pinning)提供了两种锁定方式: Certificate Pinning(证书锁定) 和 Public Key Pinning(公钥锁定),文章开头和概述描述的实际上是Certificate Pinning。
证书锁定:我们需要将APP代码内置仅接受指定域名的证书,而不接受操作系统或浏览器内置的CA根证书对应的任何证书,通过这种授权方式,保障了APP与服务端通信的唯一性和安全性,因此我们移动端APP与服务端(例如API网关)之间的通信是可以保证绝对安全。但是CA签发证书都存在有效期问题,所以缺点是在证书续期后需要将证书重新内置到APP中。
公钥锁定:则是提取证书中的公钥并内置到移动端APP中,通过与服务器对比公钥值来验证连接的合法性,我们在制作证书密钥时,公钥在证书的续期前后都可以保持不变(即密钥对不变),所以可以避免证书有效期问题。
SSL Pinning的一个好处是它创建了一个黑客必须克服的层才能破坏您的应用程序。他们将很难找到可利用的漏洞并将其用作应用程序功能的后门。