ATS和SSL固定

时间:2017-10-18 11:17:24

标签: ios security ssl https ios9

任何人都请解释SSL固定和App传输安全的作用。

我读到SSLpinning用于确保应用程序仅与指定的服务器本身进行通信

随着iOS 9的发布,还推出了App Transport Security库。默认情况下,ATS拒绝所有不使用至少TLS 1.2协议的不安全连接。 TLS协议是SSL协议的替代品,但它们通常都被称为SSL。考虑到SSL固定,将TLS或SSL作为底层实现没有区别 - 基本概念保持不变。

所以我的问题是 1.如果我的服务器使用的是TLS 1.2协议,那么启用ATS就足以保证安全。无需在我的应用程序中进行SSL固定。请确认 2.如果我的服务器低于TLS 1.2协议,则SSL固定是避免不安全连接的最佳方法。请确认

2 个答案:

答案 0 :(得分:2)

证书固定可确保您的应用与正确的服务器进行通信。如果没有Cert固定,我可以设置拦截代理,以查看流入和流出应用的所有流量。

固定证书确保我无法执行此操作,因为应用程序仅接受来自服务器的通信,并提供正确的固定证书。

  

然后启用ATS就足以实现安全性

你永远不可能拥有足够的安全性'但这部分是基于您的应用程序正在做什么的上下文。如果您的应用程序进程的端点和数据是敏感的,那么您应该坚持认证。我认为你应该总是这样做,因为它很容易做到。

  

如果我的服务器低于TLS 1.2协议,则SSL固定是避免不安全连接的最佳方法

这会导致ATS出现问题,您的服务器应该真正支持TLS 1.2,现在它已经无处不在了。您还需要确保证书使用东部SHA256指纹,使用2048位或更高的RSA密钥,或256位或更高的椭圆曲线(ECC)密钥,您需要支持其中一个密码:

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

这可能看起来很吓人,但实际上上述情况非常标准。

注意:

  

它们通常被称为SSL

你是对的,但这是一个坏习惯。他们可能做同样的事情,但他们以不同的方式做。 SSL是SSL,TLS是TLS,它们是不同的。

注2:

如果使用证书固定,请考虑使用公钥固定或CA证书固定。

答案 1 :(得分:1)

https://infinum.co/the-capsized-eight/how-to-make-your-ios-apps-more-secure-with-ssl-pinning

"随着iOS 9的发布,还推出了App Transport Security库。默认情况下,ATS拒绝所有不使用至少TLS 1.2协议的不安全连接。 TLS协议是SSL协议的替代品,但它们通常都被称为SSL。考虑到SSL固定,将TLS或SSL作为底层实现没有区别 - 基本概念保持不变。