什么是SSL固定? (介绍)

在讨论SSL固定之前,我们需要讨论安全的Web连接。 当诸如移动应用程序或Web浏览器之类的客户端应用程序开始与服务器进行安全会话时,客户端和服务器必须达成三点共识。

1.如何交换钥匙
2.如何加密数据
3.如何将邮件标记为真实

服务器可以决定使用RSA交换密钥AES 256来加密数据,并使用SHA-1签名消息。

如果客户端可以支持这些消息,则客户端向服务器请求证书链。 一旦客户端验证了证书链,便从证书中提取公钥。

这就是SSL固定起作用的地方。 开发人员可以将公钥编译为应用程序代码。 这实际上将密钥固定到了应用程序中。 当客户端从服务器接收到公共密钥时,它将把该密钥与应用程序中的固定密钥进行比较。

密钥应该匹配。 如果密钥不匹配,则客户端终止会话。

现在有三种类型的SSL固定。
1.公钥固定(如上所述)
2.证书固定
3. SPKI固定

这涉及固定整个证书,而不是仅固定公用密钥。 证书过期时,我们必须先使用新证书更新客户端应用程序,然后再更新服务器上的证书。 因此,公钥固定是首选的固定方法。 由于证书已正确更新,因此公钥不会更改,我们也不必更新我们的应用程序。

主题公共密钥信息(SPKI)是最新的固定类型。 使用此方法,将公钥和其他元数据的哈希固定到应用程序。 不使用SSL固定的应用程序容易受到中间人攻击。 这是攻击者秘密中继并可能更改消息的时候。

SSL固定允许开发人员在其应用程序中添加额外的安全层。 而且很容易通过诸如iOS的AFNetworking和Android的OkHttp之类的库来实现。