ATS和SSL固定
任何人都请解释SSL固定和应用传输安全的作用。ATS和SSL固定
我读了SSLpinning用于确保应用程序只与指定服务器本身
跟iOS 9的发布进行通信,还引入了应用传输安全库。默认情况下,ATS拒绝所有不使用至少TLS 1.2协议的不安全连接。 TLS协议取代了SSL协议,但它们通常都被称为SSL。考虑到SSL,将TLS或SSL作为底层实现没有区别 - 基本概念保持不变。
所以我的问题是 1.如果我的服务器使用TLS 1.2协议,那么启用ATS就足够安全。无需在我的应用中进行SSL固定。请确认 2.如果我的服务器低于TLS 1.2协议,那么SSL固定是避免不安全连接的最佳方法。请确认
证书固定可确保您的应用正在与正确的服务器进行通信。如果没有安装Cert,我可以设置拦截代理来查看流入和流出应用的所有流量。
固定证书确保我不能这样做,因为应用程序将只接受来自服务器的通信提供正确的固定证书。
然后使ATS是足够安全
你永远不能拥有“足够安全”,但根据你的应用程序是这样做的部分是上下文。如果您的应用程序进程的端点和数据非常敏感,那么您应该坚决进行证书确认。我认为你应该总是这么做,因为它很容易做到。
如果我下面TLS 1.2协议的服务器,然后SSL钉扎是为了避免不安全的连接
的最好方式这将导致与苯丙胺类兴奋剂问题,你的服务器真的应该支持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证书牵制。
https://infinum.co/the-capsized-eight/how-to-make-your-ios-apps-more-secure-with-ssl-pinning
“跟iOS 9的发布,也被引入了应用传输安全库。默认情况下,ATS拒绝不使用至少TLS 1.2协议的所有不安全的连接。TLS协议这是SSL协议的替代品,但它们通常都被称为SSL。在考虑到SSL的情况下,将TLS或SSL作为底层实现方式没有什么区别 - 基本概念保持不变 -