小编mit*_*ade的帖子

AFNetworking TLS验证自签名服务器根CA的问题

这个问题试图为我的特定用例找到解决方案,并记录我为其他正在遵循此过程的人尝试做的事情.

我们有一个RESTful服务器和一个iOS应用程序.我们拥有自己的证书颁发机构,服务器具有根证书颁发机构和自签名证书.我们按照此过程生成以下文件:

http://datacenteroverlords.com/2012/03/01/creating-your-own-ssl-certificate-authority/

rootCA.pem rootCA.key server.crt server.key

只有服务器证书存储在我们的服务器上,并且作为SSL过程的一部分,公钥与API调用一起发送以进行验证.

我按照这个过程使用AFNetworking来使用证书锁定以及公钥锁定来验证我们的自签名证书:

http://initwithfunk.com/blog/2014/03/12/afnetworking-ssl-pinning-with-self-signed-certificates/

我们根据本指南将.crt文件转换为.cer文件(DER格式):

https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them

并在iOS应用包中包含.cer文件(server.cer).这成功地允许我们的应用程序向我们的服务器发出GET/POST请求.但是,由于我们的服务器证书可能会过期或重新发布,我们希望使用根CA,就像AFNetworking上此线程中的人员所做的那样:

https://github.com/AFNetworking/AFNetworking/issues/1944

目前我们已经更新到AFNetworking 2.6.0,因此我们的网络库应该包含所有更新,包括本讨论中的更新:

https://github.com/AFNetworking/AFNetworking/issues/2744

用于创建安全策略的代码:

    var manager: AFHTTPRequestOperationManager = AFHTTPRequestOperationManager()
    manager.requestSerializer = AFJSONRequestSerializer() // force serializer to use JSON encoding

    let policy: AFSecurityPolicy = AFSecurityPolicy(pinningMode: AFSSLPinningMode.PublicKey)
    var data: [NSData] = [NSData]()
    for name: String in ["rootCA", "server"] {
        let path: String? = NSBundle.mainBundle().pathForResource(name, ofType: "cer")
        let keyData: NSData = NSData(contentsOfFile: path!)!
        data.append(keyData)
    }
    policy.pinnedCertificates = data
    policy.allowInvalidCertificates = true 
    policy.validatesDomainName = false 
    manager.securityPolicy = policy
Run Code Online (Sandbox Code Playgroud)

通过包含server.cer,我们可以通过固定公钥来信任我们的服务器(也尝试过AFSecurityPolicyPinningMode.Certificate); 这很有效,因为包含了确切的证书.但是因为我们可能会更改服务器所具有的server.crt文件,所以我们希望能够只使用rootCA.cer来完成它. …

ssl ios afnetworking

18
推荐指数
1
解决办法
4051
查看次数

UIImagePickerControllerOriginalImage nil导致照片捕获崩溃

我的应用程序的几个版本崩溃了,似乎已经开始在iOS8上发生了.我只通过崩溃报告来体验它,并且无法在我的测试设备上重现它.似乎是当用户捕获图像(或从库中选择它?)时,由于图像为零,因此无法设置原始图像.我在搜索时可以找到的最接近的问题是:

https://github.com/B-Sides/ELCImagePickerController/issues/58

另一种可能性是当它以特定的竞争状态时序为背景时,我也无法重现.

http://openradar.appspot.com/19953748

但我认为我的错误不是来自正在选择的流图像.我希望看看是否有其他人收到此错误,并且已找出一个解决方案以始终捕获异常,或检测何时发生这种情况,或禁用特定的用户操作(如在上传照片时设置应用程序)以避免崩溃.

致命异常:NSInvalidArgumentException***setObjectForKey:object不能为nil(key:UIImagePickerControllerOriginalImage)

Thread : Fatal Exception: NSInvalidArgumentException
0  CoreFoundation                 0x2b381fef __exceptionPreprocess + 126
1  libobjc.A.dylib                0x39633c8b objc_exception_throw + 38
2  CoreFoundation                 0x2b29daa3 -[__NSDictionaryM setObject:forKey:] + 850
3  PhotoLibrary                   0x345bf8f3 __CreateInfoForImage
4  PhotoLibrary                   0x345bf1ad PLNotifyImagePickerOfImageAvailability
5  PhotoLibrary                   0x345d384b -[PLUICameraViewController cameraView:photoSaved:]
6  PhotoLibrary                   0x34606a73 -[PLImagePickerCameraView cropOverlay:didFinishSaving:]
7  PhotoLibrary                   0x3460706d -[PLImagePickerCameraView captureController:didCompleteResponse:forStillImageRequest:error:]
8  CameraKit                      0x303392a5 -[CAMCaptureController _completedResponse:forRequest:error:]
9  CameraKit                      0x30338bfb __56-[CAMCaptureController enqueueStillImageCaptureRequest:]_block_invoke_32160
10 libdispatch.dylib              0x39b9e2e3 _dispatch_call_block_and_release + 10
11 libdispatch.dylib              0x39b9e2cf _dispatch_client_callout + 22
12 libdispatch.dylib              0x39ba1d2f _dispatch_main_queue_callback_4CF + …
Run Code Online (Sandbox Code Playgroud)

ios

11
推荐指数
1
解决办法
3057
查看次数

故事板中tableviewController中的原型tableview单元格

我有一个原本不是故事板应用程序的应用程序.我已经为一个功能分支添加了一个故事板,并且它上面有一个子类UITableViewController.我创建了一个原型细胞与几个UILabelsUIImageViews,并添加标签为他们每个人.原型单元具有正确的标识符.

我已经使用标识符注册了类:

[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"CustomCell"];
Run Code Online (Sandbox Code Playgroud)

当我尝试将自定义单元格出列并访问其视图时:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell" forIndexPath:indexPath];
UIImageView *icon = (UIImageView *)[cell viewWithTag:1];
Run Code Online (Sandbox Code Playgroud)

视图(图标)为零.

我也尝试了对它进行子类化,并使用重用标识符注册子类,并UITableViewCell在原型中设置子类名称.在这种情况下,

UIImageView *icon = cell.icon; 
Run Code Online (Sandbox Code Playgroud)

仍然返回零.

故事板与主要故事板有关吗?我有其他项目,其中定制的原型单元subviews正常工作没有这些麻烦.有没有办法注册自定义类或UITableViewCell自定义标识符,但指定它来自哪个故事板?

storyboard uitableview ios

1
推荐指数
1
解决办法
1738
查看次数

标签 统计

ios ×3

afnetworking ×1

ssl ×1

storyboard ×1

uitableview ×1