ios swift 动态更新 SSL 证书(.cer)文件

Posted

技术标签:

【中文标题】ios swift 动态更新 SSL 证书(.cer)文件【英文标题】:ios swift Dynamically update SSL Certificate(.cer) files 【发布时间】:2022-01-17 19:02:39 【问题描述】:

动态需要更新。 我可以从 URL 下载证书并将其保存到文档目录。

func downloadFile(url: URL, completion: @escaping (String?, Error?) -> Void) 
    let documentsUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
    let destinationUrl = documentsUrl.appendingPathComponent(url.lastPathComponent)
    if FileManager().fileExists(atPath: destinationUrl)
    
        print("File already exists [\(destinationUrl)]")
        completion(destinationUrl, nil)
    
    if let dataFromURL = NSData(contentsOf: url)
    
        if dataFromURL.write(to: URL(string: destinationUrl)!, atomically: true)
        
            print("file saved [\(destinationUrl)]")
            completion(destinationUrl, nil)
        
        else
        
            print("error saving file")
            let error = NSError(domain:"Error saving file", code:1001, userInfo:nil)
            completion(destinationUrl, error)
        
    
    else
    
        let error = NSError(domain:"Error downloading file", code:1002, userInfo:nil)
        completion(destinationUrl, error)
    

我的问题是下载文件后需要保存到 App Bundle (Bundle.main.resourcePath) 目录中。 还是保存到文档文件夹,移动到App Bundle目录下?

【问题讨论】:

【参考方案1】:

您不能将内容移动到Bundle 目录。这是一个只读目录。您必须从 Documents 读取它们并使用代码通过手动读取文件(或使用 Alamofire)来创建证书固定

【讨论】:

我只使用 Alamofire,但是 Alamofire 仅自动获取证书应用程序包 (Bundle.main.af.certificates) A​​lamofire 是否提供任何属性来更改证书目录。

以上是关于ios swift 动态更新 SSL 证书(.cer)文件的主要内容,如果未能解决你的问题,请参考以下文章

使用certbot 生成 Let‘s Encrypt 泛域名ssl证书

更新 ios 推送通知的 SSL 证书时是不是需要重新创建 CK.pem?

在 Alamofire 4 中动态允许自签名证书

iOS 10.3下解决Charles抓包ssl证书信任问题

iOS 10.3下解决Fiddler代理抓包ssl证书信任问题

Alamofire ssl 错误的证书 Swift