当前位置:  开发笔记 > 编程语言 > 正文

证书钉在Alamofire

如何解决《证书钉在Alamofire》经验,为你挑选了1个好方法。

我正在创建一个访问HTTPS Web服务的iPad应用程序.我想实现固定,但我遇到了问题.

这个类创建了Alamofire Manager(主要来自文档):

class NetworkManager {

    var manager: Manager?

    init() {
        let serverTrustPolicies: [String: ServerTrustPolicy] = [
            "www.google.co.uk": .PinCertificates(
                certificates: ServerTrustPolicy.certificatesInBundle(),
                validateCertificateChain: true,
                validateHost: true
            ),
            "insecure.expired-apis.com": .DisableEvaluation
        ]

        manager = Alamofire.Manager(
            configuration: NSURLSessionConfiguration.defaultSessionConfiguration(),
            serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
        )
    }
}

这个函数调用:

static let networkManager = NetworkManager()

public static func testPinning() {
    networkManager.manager!.request(.GET, "https://www.google.co.uk").response { response in
        if response.1 != nil {
            print("Success")
            print(response.1)
            print(response.1?.statusCode)
        } else {
            print("Error")
            print(response.3)
        }
    }
}

该证书保存在项目中,并在"目标>构建阶段>复制包资源"显示.

我每次发出请求时都会收到以下错误(来自else块testPinning()):

Optional(Error Domain=NSURLErrorDomain Code=-999 "cancelled" UserInfo={NSErrorFailingURLKey=https://www.google.co.uk/, NSLocalizedDescription=cancelled, NSErrorFailingURLStringKey=https://www.google.co.uk/})

jcaron.. 8

因此,问题是证书以错误的格式保存.

ServerTrustPolicy.certificatesInBundle()根据扩展列表查找捆绑包中的所有证书,然后尝试使用它们加载它们SecCertificateCreateWithData.根据其文档,此功能:

如果data参数中传递的数据不是有效的DER编码的X.509证书,则返回NULL

在Firefox中导出证书时,文件浏览器底部会出现"格式"弹出窗口.选择"X.509证书(DER)",您应该为此目的获得正确格式的证书.



1> jcaron..:

因此,问题是证书以错误的格式保存.

ServerTrustPolicy.certificatesInBundle()根据扩展列表查找捆绑包中的所有证书,然后尝试使用它们加载它们SecCertificateCreateWithData.根据其文档,此功能:

如果data参数中传递的数据不是有效的DER编码的X.509证书,则返回NULL

在Firefox中导出证书时,文件浏览器底部会出现"格式"弹出窗口.选择"X.509证书(DER)",您应该为此目的获得正确格式的证书.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有