2信任设置找不到 ios11_ios11 2信任设置找不到 - CSDN
  • 有的同学配置时信任证书明明安装了,PC客户端配置也ok...但对于IOS11系统,配置折腾了很久无果,后来发现IOS11系统还有一个地方需要设置,需启用“受信任证书存储区版本”,接下来就完整介绍下我是怎么配置的,希望...

    有的同学配置时信任证书明明安装了,PC客户端配置也ok就是偏偏抓的https包“报红”显示“unknow”,这表示https未进行解密,此时一般是IOS系统版本存在设置区别的问题,我就是IOS9版本系统,安装信任证书即可成功进行https抓包,但对于IOS11系统,配置折腾了很久无果,后来发现IOS11系统还有一个地方需要设置,需启用“受信任证书存储区版本”,接下来就完整介绍下我是怎么配置的,希望能帮到大家解决和我之前遇到的同样问题。

    主要分4步,详见如下:

    1、配置charles PC客户端 (代理设置)





    查看安装信任证书的配置



    如下信息为用于手机WIFI代理配置的配置信息。(10.10.200.229:8888 为代理IP和端口)



    2、IOS手机连接与PC机同网段网络并设置PC charles的服务为手机代理 












    3、IOS手机安装信任证书 ,在safari浏览器中输入 chls.pro/sll ,访问并安装信任证书。

        安装成功后在“设置-通用-描述文件与设备管理”中可查看到已安装的charles信任证书。



    4、IOS11系统需启用“受信任证书存储区版本”(IOS10系统也许也需要,我没有该版本手机所以没验证,若大家是IOS10系统也存在该问题,自己在手机“设置-关于”里是否有“证书信任设置”功能入口)







    最后,将PC上的charles软件关闭,重新打开,手机访问网页,查看抓包的https是否能解析出请求和响应参数,到此配置已完毕。


    展开全文
  • iPhone系统更新到iOS10.3以后,设置fiddler代理抓包,会出现无法抓取https请求,app请求失败的问题 这是因为在iOS 10.3之前,当你将安装fiddler的自定义证书后,iOS会默认信任,需要进一步的设置。而iOS 10.3之后,...

    iPhone系统更新到iOS 10.3以后,设置fiddler代理抓包,会出现无法抓取https请求,app请求失败的问题

    这是因为在iOS 10.3之前,当你将安装fiddler的自定义证书后,iOS会默认信任,不需要进一步的设置。而iOS 10.3之后,安装新的自定义证书默认是不受信任的。

    如果要信任已安装的自定义证书,就需要去手工设置。

    设置方式:

    设置->通用->关于本机->证书信任设置->  找到 fiddler证书,打开信任开关

     

    然后你就会发现 https抓包成功,app不再访问网络失败

     

    转载于:https://www.cnblogs.com/yaks/p/7274768.html

    展开全文
  • 之前开发App的时候服务端使用的是自签名的证书,导致iOS开发过程中调用HTTPS接口时,证书信任 - (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationC...

    之前开发App的时候服务端使用的是自签名的证书,导致iOS开发过程中调用HTTPS接口时,证书不被信任

    - (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler{
        
        /*方法一*/
        if([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]){
            NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
            if(completionHandler)
                completionHandler(NSURLSessionAuthChallengeUseCredential,credential);
        }
        
        /*方法二*/
    //    SecTrustRef servertrust = challenge.protectionSpace.serverTrust;
    //    SecCertificateRef certi= SecTrustGetCertificateAtIndex(servertrust, 0);
    //    NSData *certidata = CFBridgingRelease(CFBridgingRetain(CFBridgingRelease(SecCertificateCopyData(certi))));
    //    NSString *path = [[NSBundle mainBundle] pathForResource:@"证书名称" ofType:@"cer"];
    ////    NSLog(@"证书 : %@",path);
    //    NSData *localCertiData = [NSData dataWithContentsOfFile:path];
    //    if ([certidata isEqualToData:localCertiData]) {
    //        NSURLCredential *credential = [[NSURLCredential alloc] initWithTrust:servertrust];
    //        [challenge.sender useCredential:credential forAuthenticationChallenge:challenge];
    //        completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
    ////        NSLog(@"服务端证书认证通过");
    //    }else {
    //        completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil);
    //        NSLog(@"服务端认证失败");
    //    }
        
    }
    

    这里有两个方法,第一个是信任所有证书,第二个是把服务端自签名的证书放到本地,类似白名单的样子去加载

    源码

    HttpRequest.h

    //
    //  HttpRequest.h
    //
    //  Created by Michael Zhan on 2017/5/17.
    //  Copyright © 2017年 Michael Zhan. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    static NSString * const baseUrl = @"http://";
    
    typedef void (^SuccessBlock)(NSString * data);
    typedef void (^FailureBlock)(NSError * error);
    
    @interface HttpRequest : NSObject <NSURLSessionTaskDelegate>
    
    - (void)getWithDict:(NSString *)paramUrl NSDictionary:(NSDictionary *)paramDicet success:(SuccessBlock)successBlock failure:(FailureBlock)failureBlock;
    
    - (void)postWithDict:(NSString *)paramUrl NSDictionary:(NSDictionary *)paramDicet success:(SuccessBlock)successBlock failure:(FailureBlock)failureBlock;
    
    - (void)getWithString:(NSString *)paramUrl NSString:(NSString *)paramString success:(SuccessBlock)successBlock failure:(FailureBlock)failureBlock;
    
    - (void)postWithString:(NSString *)paramUrl NSString:(NSString *)paramString success:(SuccessBlock)successBlock failure:(FailureBlock)failureBlock;
    
    - (void)postWithDict2String:(NSString *)paramUrl NSDictionary:(NSDictionary *)paramDicet success:(SuccessBlock)successBlock failure:(FailureBlock)failureBlock;
    
    @end
    

    HttpRequest.m

    //
    //  HttpRequest.m
    //
    //  Created by Michael Zhan on 2017/5/17.
    //  Copyright © 2017年 Michael Zhan. All rights reserved.
    //
    
    #import "HttpRequest.h"
    
    @implementation HttpRequest
    
    - (void)getWithDict:(NSString *)paramUrl NSDictionary:(NSDictionary *)paramDicet success:(SuccessBlock)successBlock failure:(FailureBlock)failureBlock{
        
        NSMutableString * mutableStringUrl = [[NSMutableString alloc] initWithString:paramUrl];
        [mutableStringUrl appendString:[HttpRequest convertToJsonData:paramDicet]];
        
        NSLog(@"url %@",mutableStringUrl);
        
        NSURL * url = [NSURL URLWithString:[mutableStringUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]];
        
        NSURLRequest * request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];
        
        //2程序自动安装证书的方式
        NSURLSession * session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]];
        
        NSURLSessionDataTask * dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            if (error) {
                failureBlock(error);
            } else {
                NSString * result = [[NSString alloc] initWithData:data  encoding:NSUTF8StringEncoding];
                successBlock(result);
            }
        }];
        [dataTask resume];
        
    }
    
    - (void)postWithDict:(NSString *)paramUrl NSDictionary:(NSDictionary *)paramDicet success:(SuccessBlock)successBlock failure:(FailureBlock)failureBlock{
        
        NSURL * url = [NSURL URLWithString:paramUrl];
        
        NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url
                        cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:100];
        
        request.HTTPMethod = @"POST";
        NSString * jsonStr = [HttpRequest convertToJsonData:paramDicet];
        request.HTTPBody = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
        
        //2程序自动安装证书的方式
        NSURLSession * session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]];
        
        NSURLSessionDataTask * dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            if (error) {
                failureBlock(error);
                [session finishTasksAndInvalidate];
            } else {
                NSString * result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
                successBlock(result);
                [session finishTasksAndInvalidate];
            }
        }];
        [dataTask resume];
    }
    
    - (void)postWithDict2String:(NSString *)paramUrl NSDictionary:(NSDictionary *)paramDicet success:(SuccessBlock)successBlock failure:(FailureBlock)failureBlock{
        
        NSURL * url = [NSURL URLWithString:paramUrl];
        
        NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:100];
        
        request.HTTPMethod = @"POST";
        NSString * jsonStr = [NSString stringWithFormat:@"%@",paramDicet];
        request.HTTPBody = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
        request.timeoutInterval = 10;
        request.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
        
        
        //2程序自动安装证书的方式
        NSURLSession * session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]];
        
        NSURLSessionDataTask * dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            if (error) {
                failureBlock(error);
                [session finishTasksAndInvalidate];
            } else {
                NSString * result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
                successBlock(result);
                [session finishTasksAndInvalidate];
            }
        }];
        [dataTask resume];
    }
    
    - (void)getWithString:(NSString *)paramUrl NSString:(NSString *)paramString success:(SuccessBlock)successBlock failure:(FailureBlock)failureBlock{
       
        NSMutableString * mutableStringUrl = [[NSMutableString alloc] initWithString:paramUrl];
        [mutableStringUrl appendString:paramString];
        
        NSLog(@"url %@",mutableStringUrl);
        NSURL * url =[NSURL URLWithString:[mutableStringUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]];
        
        NSURLRequest * request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];
        
        //2程序自动安装证书的方式
        NSURLSession * session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]];
        
        NSURLSessionDataTask * dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            if (error) {
                failureBlock(error);
                [session finishTasksAndInvalidate];
            } else {
                NSString * result = [[NSString alloc] initWithData:data  encoding:NSUTF8StringEncoding];
                successBlock(result);
                [session finishTasksAndInvalidate];
            }
        }];
        [dataTask resume];
    
    }
    
    - (void)postWithString:(NSString *)paramUrl NSString:(NSString *)paramString success:(SuccessBlock)successBlock failure:(FailureBlock)failureBlock{
        
        NSURL * url = [NSURL URLWithString:paramUrl];
        
        NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:100];
        request.HTTPMethod = @"POST";
        request.HTTPBody = [paramString dataUsingEncoding:NSUTF8StringEncoding];
        request.timeoutInterval = 10;
        request.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
        
        //2程序自动安装证书的方式
        NSURLSession * session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]];
    
        NSURLSessionDataTask * dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            if (error) {
                failureBlock(error);
                 [session finishTasksAndInvalidate];
            } else {
                NSString * result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
                successBlock(result);
                 [session finishTasksAndInvalidate];
            }
        }];
        [dataTask resume];
    }
    
    + (NSString *)convertToJsonData:(NSDictionary *)dict{
        NSError *error;
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];
        NSString *jsonString;
        if (!jsonData) {
            NSLog(@"%@",error);
        }else{
            jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];
        }
        NSMutableString *mutStr = [NSMutableString stringWithString:jsonString];
        NSRange range = {0,jsonString.length};
        //去掉字符串中的空格
        [mutStr replaceOccurrencesOfString:@" " withString:@"" options:NSLiteralSearch range:range];
        NSRange range2 = {0,mutStr.length};
        //去掉字符串中的换行符
        [mutStr replaceOccurrencesOfString:@"\n" withString:@"" options:NSLiteralSearch range:range2];
        return mutStr;
    }
    
    - (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler{
        
        /*方法一*/
        if([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]){
            NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
            if(completionHandler)
                completionHandler(NSURLSessionAuthChallengeUseCredential,credential);
        }
        
        /*方法二*/
    //    SecTrustRef servertrust = challenge.protectionSpace.serverTrust;
    //    SecCertificateRef certi= SecTrustGetCertificateAtIndex(servertrust, 0);
    //    NSData *certidata = CFBridgingRelease(CFBridgingRetain(CFBridgingRelease(SecCertificateCopyData(certi))));
    //    NSString *path = [[NSBundle mainBundle] pathForResource:@"zwp" ofType:@"cer"];
    ////    NSLog(@"证书 : %@",path);
    //    NSData *localCertiData = [NSData dataWithContentsOfFile:path];
    //    if ([certidata isEqualToData:localCertiData]) {
    //        NSURLCredential *credential = [[NSURLCredential alloc] initWithTrust:servertrust];
    //        [challenge.sender useCredential:credential forAuthenticationChallenge:challenge];
    //        completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
    ////        NSLog(@"服务端证书认证通过");
    //    }else {
    //        completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil);
    //        NSLog(@"服务端认证失败");
    //    }
        
    }
    
    @end
    
    展开全文
  • 路径:设置 - 通用 - 描述文件与设备管理 路径:设置 - 通用 - 关于本机 - 证书信任设置 Ps:一般第一张图大家都可能知道,但第二张图有时候会忘记开了。 ...

    路径:设置 - 通用 - 描述文件与设备管理

    路径:设置 - 通用 - 关于本机 - 证书信任设置

    Ps:一般第一张图大家都可能知道,但第二张图有时候会忘记开了。

    展开全文
  • 当用户设置app允许使用位置的时候,最好的用户体验就是直接调转系统的位置设置界面,进行设置。 本人已经测试,在5c iOS8.3系统 和 5s iOS7.1系统中可以正常跳转 跳转自己的项目中 在需要调转的按钮...

    在项目中,我们经常会碰到使用位置的需求。当用户设置app不允许使用位置的时候,最好的用户体验就是直接调转到系统的位置设置界面,进行设置。

    本人已经测试,在5c iOS8.3系统 和 5s iOS7.1系统中可以正常跳转

    跳转到自己的项目中

    在需要调转的按钮动作中添加如下的代码,就会跳转到设置中自己的app的设置界面,这里会有通知和位置权限的设置

    NSURL * url = [NSURLURLWithString:UIApplicationOpenSettingsURLString];

    if([[UIApplicationsharedApplication] canOpenURL:url]) {

        NSURL*url =[NSURLURLWithString:UIApplicationOpenSettingsURLString];           [[UIApplicationsharedApplication] openURL:url];  

    }

    测试注意:新项目测试,需要请求一下位置权限或者通知权限,才可以跳进自己的app设置里面,如果没有任何权限请求,就只能跳到系统的设置界面

    跳转到系统设置的其他界面

    在点击跳转的按钮动作中添加如下代码


    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];


    在项目中的info中添加 URL types

    添加 URL Schemes 为 prefs的url


    这样点击就可以跳转到wifi设置界面

    (测试手机 5c 8.3系统 5s 7.1系统)


    跳转到其他的界面的字段

    About — prefs:root=General&path=About  

    Accessibility — prefs:root=General&path=ACCESSIBILITY  

    AirplaneModeOn— prefs:root=AIRPLANE_MODE  

    Auto-Lock — prefs:root=General&path=AUTOLOCK  

    Brightness — prefs:root=Brightness  

    Bluetooth — prefs:root=General&path=Bluetooth

    Date& Time — prefs:root=General&path=DATE_AND_TIME  

    FaceTime — prefs:root=FACETIME

    General— prefs:root=General

    Keyboard — prefs:root=General&path=Keyboard  

    iCloud — prefs:root=CASTLE  iCloud 

    Storage & Backup — prefs:root=CASTLE&path=STORAGE_AND_BACKUP  

    International — prefs:root=General&path=INTERNATIONAL  

    Location Services — prefs:root=LOCATION_SERVICES  

    Music — prefs:root=MUSIC  

    Music Equalizer — prefs:root=MUSIC&path=EQ  

    Music VolumeLimit— prefs:root=MUSIC&path=VolumeLimit  

    Network — prefs:root=General&path=Network  

    Nike + iPod — prefs:root=NIKE_PLUS_IPOD  

    Notes — prefs:root=NOTES  

    Notification — prefs:root=NOTIFICATIONS_ID  

    Phone — prefs:root=Phone  

    Photos — prefs:root=Photos  

    Profile — prefs:root=General&path=ManagedConfigurationList  

    Reset — prefs:root=General&path=Reset  

    Safari — prefs:root=Safari  Siri — prefs:root=General&path=Assistant  

    Sounds — prefs:root=Sounds  

    SoftwareUpdate— prefs:root=General&path=SOFTWARE_UPDATE_LINK  

    Store — prefs:root=STORE  

    Twitter — prefs:root=TWITTER  

    Usage — prefs:root=General&path=USAGE  

    VPN — prefs:root=General&path=Network/VPN  

    Wallpaper — prefs:root=Wallpaper  

    Wi-Fi — prefs:root=WIFI

    Setting—prefs:root=INTERNET_TETHERING



    文/Biharry(简书作者)
    原文链接:http://www.jianshu.com/p/19602f48309b
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
    展开全文
  • 最近在测试app,ios安装app后点击提示如下图: 解决方法: ... ...2 点击企业级应用 》 信任该开发者 》 信任设置之后可正常运行app。 转载于:https://www.cnblogs.com/dinghanhua/p/5799657.html...
  • 最近iPhone系统更新到iOS 10.3后,在公司里用Charles抓包竟然出现了一些问题,https的请求都会失败,提示错误信息为Failure SSLHandshake: Received fatal alert: unknown_ca 和You may need to configure you
  • 情形 有时候当你安装的burpsuite证书在的IOS或者Android的测试机上,之后使用...设置——》通用——》关于本机——》证书信任设置——》启用信任: 之后使用burpsuite可以完美抓取应用的数据包: ...
  • 当用户设置app允许使用位置的时候,最好的用户体验就是直接调转系统的位置设置界面,进行设置。 本人已经测试,在5c iOS8.3系统 和 5s iOS7.1 6 iOS9.1系统中可以正常跳转 跳转自己的项目中 在需要调转...
  • 某天清理过钥匙串中的证书后,再双击安装证书时便提示证书信任,情况如下图:查遍了钥匙串的各种设置,依然没有解决,都做好要重装系统的准备了,愿那么麻烦装系统的我,在网上看到一篇证书无效的文章,抱着...
  • IOS 10.3之后的系统,安装新的自定义证书是信任的。而之前系统都是会自动信任的,所以需要在手机上操作一下步骤: 设置-》通用-》关于本机-》证书信任设置-》找到Charles proxy custom root certifice 信任该...
  • = iOS10.3(之前的手机升级一直报错, 升不到10.3, 没发现这个问题, 这次升级到iOS11才发现了, 误以为是iOS11才改的)时, 你会发现charles抓不到数据了. 然而之前任何问题都没有,并且相关设置都正确:Mac上安装了...
  • ios13系统中新增了很多值得一提的功能,可以帮助更加简单化的使用iphone手机,而在手机上也可以实现喊一句就能帮你进入该功能,那么ios13快捷指令怎么设置呢?下面就为大家带来ios13快捷指令设置方法,想知道的一...
  • 这篇文章主要针对的是企业应用安装后如何在 Safari 中引导用户跳转 [设置 - 通用 - 描述文件] 页面去,以便用户信任你的企业签名描述文件,在 iOS9 的时候是很方便的,无论是在应用内或者 Safari 中都可以直接唤起...
  • ——翻译自Apple Reference《Certificate,Key,and Trust Services Programming ...本章描述并演示了如何使用证书、密钥和信任服务去导入一个indentity,评估证书是否可信,判断证书失效的原因,以及失效证书的恢复。
  • 配置完后,有两个证书,一个装电脑上,一个装手机上。 ... enable SSL proxying后也是不行 ...so,换了几部手机后,发现有些IOS手机是没有问题,有些还是抓不到 最后发现,这些手机没有信任Charle...
  • iOS http域名设置

    2018-04-14 09:45:57
    云栖社区博客问答聚能聊直播论坛公众号订阅云大学更多...正文苹果ATS(强制HTTPS)审核新政解码红枫国度 2016-11-01 14:00:05 浏览21419 评论2ios 域名 HTTPS http 配置 aliyun Apple 移动开发苹果审核 A...
  • IOS安装burpsuite证书之后能抓数据包解决方法 在ios端安装burpsuite证书 设置->通用->关于本机->证书信任设置,将burpsuite的证书开启即可
  • 因为你的ios系统应该是10.0以上的系统, ...在手机系统设置---关于手机----证书信任设置,在此页面把证书开启即可;   转自 https://www.cnblogs.com/ceshijiagoushi/archive/2017/12/21/8082055.html...
  • 问题:在做 ios 开发 安装 根证书时 遇到如下提示: 能修改“System Roots”钥匙串 要更改根证书是否会被信任,请在“钥匙串访问”中打开它,然后修改它的信任设置解决方法:1、点击“钥匙串访问”页面左侧...
1 2 3 4 5 ... 20
收藏数 12,023
精华内容 4,809
关键字:

2信任设置找不到 ios11