传输层安全性 (TLS) 证书固定是一种安全技术,有助于防止中间人攻击 (MitM)。
当客户端连接到网络服务器时,通常它会检查服务器提供的数字证书,以确保它是由受信任的证书颁发机构 (CA) 颁发的。然而此过程可能容易受到(MitM)攻击,攻击者会拦截流量并提供同样由受信任的 CA 签名的虚假数字证书。
TLS 证书固定通过允许客户端指定一个或多个预期的公钥哈希值或网络服务器应使用的数字证书来解决此漏洞。当客户端连接到服务器时,它会验证是否提供了预期的证书或公钥哈希,如果没有,它将终止连接或发出警报。
证书固定是一种将域名与一个或多个预期的 TLS 证书相关联的机制。更准确地说,Approov 推荐的机制是主题公钥身份 (SPKI) 固定,其中需要特定的证书公钥。这种方法是最灵活并可维护的,因为如果证书是使用相同的公钥生成的,它允许证书在使用相同公钥生成的情况下轮换而不需要固定更改。
每当应用程序需要与托管该域名的服务器建立连接时,都会发生 TLS 握手,以便双方可以交换消息,建立要使用的加密算法,并设置用于以后使用的会话加密密钥。在 TLS 握手期间,当设备接收到服务器证书链时,只有在它信任该链中的一个或多个证书时才会建立连接。
固定确保连接确实是从应用程序到官方后端建立的。固定还可防止中间人 (MitM) 攻击或流量代理,在这种情况下应用程序与后端之间的加密数据可能会被第三方观察甚至操纵。
通过使用 TLS 证书固定,拦截流量并试图提供伪造数字证书的攻击者将失败,因为客户端将只接受它期望的特定证书或公钥哈希。这提供了针对 MITM 攻击的额外安全层。