3
如何配置IIS 7.5 SSL \ TLS以与iOS 9 ATS一起使用
问题:由于iOS 9现在使用ATS,因此我们的移动应用程序无法再与我们的Web服务建立安全连接。 背景: iOS 9引入了App Transport Security 服务器设置: Windows Server 2008 R2 SP1(VM)IIS 7.5,来自digicert的SSL证书。Windows防火墙关闭。 密钥RSA 2048位(e 65537) 发行者DigiCert SHA2安全服务器CA 签名算法SHA512withRSA 这些是应用程序传输安全性要求: 服务器必须至少支持传输层安全性(TLS)协议版本1.2。连接密码仅限于提供前向保密性的密码(请参阅下面的密码列表。)证书必须使用SHA256或更好的签名哈希算法进行签名,并使用2048位或更高的RSA密钥或256位或更高的Elliptic-Curve (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。 使用IIS Crypto来使用“最佳实践”,尝试过“ pci”和自定义设置。甚至尝试将加密套件修改为上面的列表,然后重新排序。每次尝试后,服务器将重新启动,并且SSL Labs已运行(清除缓存后)。我成功地从F等级升级到A甚至A-,但这仅导致iOS 8和9无法建立安全连接。(NSURLErrorDomain代码= -1200和_kCFStreamErrorCodeKey = -9806) 恢复了VM,并尝试了Powershell脚本为SSL完美的IIS和TLS 1.2设置了IIS我什至进行了第二次尝试,在该过程中,我将Power脚本中的密码加密为所需内容的最小清单。 结果:始终相似,等级为A或A-。iOS8和iOS9无法协商安全连接。握手模拟会导致Safari和iOS产品出现“协议或密码套件不匹配”的情况。 更新在获得Apple支持之后,我们进行了一些数据包跟踪捕获: $ tcpdump …