HTTPDNS iOS : https(含SNI)libcurl+openssl生产证书怎么集成HTTPDNS
当前还没有示例,需要自行编程实现,curl也是可以实现SNI预防场景的。
curl 如何实现 SNI 预防场景
curl中有一个-resolve方法可以实现使用指定IP访问HTTPS网站。
iOS中集成curl库,参考curl文档。
另外有一点也可以注意下,它也是支持IPv6环境的,只需要你在build时添加上 --enable-ipv6 即可。
curl支持指定SNI字段,设置SNI时我们需要构造的参数形如: {HTTPS域名}:443:{IP地址}
假设你要访问:www.example.org ,若IP为127.0.0.1 ,那么通过这个方式来调用来设置SNI即可:
curl —resolve ‘www.example.org:443:127.0.0.1’
下面以 iOS 平台为例: iOS CURL 库
使用libcurl来解决,curl中有一个-resolve方法可以实现使用指定IP访问HTTPS网站。
在iOS实现中,代码如下:
//{HTTPS域名}:443:{IP地址}
NSString *curlHost = ...;
_hosts_list = curl_slist_append(_hosts_list, curlHost.UTF8String);
curl_easy_setopt(_curl, CURLOPT_RESOLVE, _hosts_list);
其中curlHost形如: {HTTPS域名}:443:{IP地址}
_hosts_list 是结构体类型hosts_list,可以设置多个IP与Host之间的映射关系。curl_easy_setopt方法中传入CURLOPT_RESOLVE将该映射设置到HTTPS请求中。
这样就可以达到设置SNI的目的。
在GitHub上也有一些Demo,展示了以上的用法,比如Demo:CYLCURLNetworking,里面包含了编译好的支持IPv6的libcurl包 ,演示了下如何通过curl来进行类似NSURLSession的网络请求过程,可以参考。
更多官方信息
EMAS官网介绍:https://www.aliyun.com/product/emas
Devops:https://www.aliyun.com/product/emascrash/mobile_devops
移动热修复:https://www.aliyun.com/product/hotfix
移动测试:https://www.aliyun.com/activity/emas/mqcexpert
移动推送:https://www.aliyun.com/product/cps
HTTPDNS:https://www.aliyun.com/product/httpdns
EMAS 控制台: https://emas.console.aliyun.com/products
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。