网页无法与服务器建立安全连接失败,“发生了SSL错误,无法与服务器建立安全连接。”...

在iOS 10.2中,当我们尝试与几个不同的api进行通信时,我们发现了这个错误。奇怪的是,我们有时只会在同一个网址的200个请求中有2个进行此操作。但另一方面,我有时可以做3000次api通话,但没有看到问题。

据我所知,这与ATS有关。输出还告诉我们,我们得到一个与ATS相关的错误代码:kCFStreamErrorCodeKey = -9806。

但是我不明白这与ATS有什么关系,因为有几点:

我打电话的网址是https。

服务器具有有效的TLSv1.2证书

我试图创建一个例外,但它似乎没有做任何事情

我们尝试以不同的方式创建异常,既允许任意加载,又为域创建异常。

即使在服务器具有有效证书时不需要,我们也尝试创建例外

这就是我们为域创建例外的方式。

NSAppTransportSecurity

NSExceptionDomains

deezer.com

NSIncludesSubdomains

NSTemporaryExceptionAllowsInsecureHTTPLoads

NSTemporaryExceptionMinimumTLSVersion

TLSv1.2

NSTemporaryExceptionRequiresForwardSecrecy

这就是我们启用仲裁负载的方式:

NSAppTransportSecurity

NSAllowsArbitraryLoads

另一个奇怪的是,我们只是在iOS 10(10.2)中看到这个。当我们在iOS 9.3中进行测试时,一切都按预期工作。

我已经制作了一个示例应用程序来重现这个。

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

[self Perform];

}

int i = 0;

- (void) Perform

{

NSURLSessionConfiguration *defaultConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];

NSURLSession *sessionWithoutADelegate = [NSURLSession sessionWithConfiguration:defaultConfiguration];

NSURL *url = [NSURL URLWithString:(@"https://api.deezer.com/chart/0/tracks")];

[[sessionWithoutADelegate dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

if(error != NULL)

{

NSLog(@"Got response with error %@.\n", error);

}

NSLog(@"%d",i);

i++;

if(i <1000)

{

[self Perform];

}

}] resume];

}

有人对解决方案有所了解吗?感谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当驱动程序无法使用全套接字层(SSL)加密与 SQL Server 建立全连接时,通常遇到 "No appropriate protocol (protocol is disabled or cipher suites are inappropriate)" 这样的错误消息,意味着存在以下几个可能的问题: 1. **SSL/TLS协议支持不足**:SQL Server 配置可能不支持或禁用了某些SSL版本,比如不支持TLS 1.2或更高版本,而驱动程序试图使用的协议设置在此范围内。 2. **SSL库问题**:驱动程序的SSL库可能与SQL Server服务器上的库不兼容,导致加密协商失败。 3. **cipher suite不匹配**:服务器和客户端之间可能没有找到共同认可的加密套件,这可能是由于配置中禁用了某些加密算法或者服务器上可用的套件列表有限。 4. **证书问题**:如果服务器的证书存在问题(如过期、未信任、格式不正确),驱动程序可能无法验证证书,从而阻止全连接。 5. **防火墙或全策略**:防火墙或企业内部的全策略可能阻止了SSL/TLS连接。 为了解决这个问题,你可以尝试以下步骤: - **检查SQL Server配置**:确认是否启用了SSL,并且配置了正确的SSL版本和加密套件。 - **更新驱动程序和库**:确保使用的驱动程序和SSL库是最新的,以支持最新的加密标准。 - **检查证书**:确认服务器证书的有效性和信任设置是否正确。 - **检查防火墙规则**:允许必要的端口和SSL通信。 - **查看日志**:分析系统日志以获取更多关于失败连接的详细信息。 相关问题: 1. 如何在SQL Server中检查SSL/TLS配置? 2. 什么是cipher suite,如何在服务器上管理它们? 3. 如何在Windows防火墙中允许特定的SSL连接?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值