即使在手动安装证书

时间:2016-06-03 11:04:21

标签: ios ssl ios-simulator ssl-certificate

总结:努力在我的iOS模拟器上通过SSL握手。

我正试图通过我的iOS模拟器Xcode 7.2模拟器9.2上的SSL握手。我已从应用程序网页(URL)中提取.cer文件并手动安装在模拟器中,但未能在模拟器中通过SSL握手。

背景资料:

  • 该应用程序不是在Xcode中构建的,可以通过桌面和设备上的via和app访问。
  • 苹果设备(不是我的模拟器)拥有预先制定的公司政策,可让他们访问该应用。
  • 桌面应用仅适用于企业wifi。
  • 我是通过appium启动模拟器的,我手动在应用程序上输入登录信息。

我的尝试。 (两者都是在公司WIFI上尝试的)

  1. 将证书(从应用程序URL)拖放到模拟器上..安装。然后转到应用程序并尝试登录。
  2. 拖动证书并安装后。我在safari中访问了应用程序URL,并成功设法访问它。然而,尝试登录后,出现了相同的SSL错误。
  3. 非常感谢任何建议

1 个答案:

答案 0 :(得分:0)

我遇到类似的问题,让我的应用程序使用我的SSL证书,并通过以下方式解决它:

  1. 将.cer文件包含在xcode中的apps目录中。

  2. 使用Alamofire和以下代码固定和完成SSL握手

  3. let hatchliCert = "nameOfCert"  
    var urlSession: NSURLSession!
    var serverTrustPolicy: ServerTrustPolicy!
    var serverTrustPolicies: [String: ServerTrustPolicy]!
    var afManager: Manager!
    
    
    
    func configureAlamoFireSSLPinningWithCertificateData(certificateData: NSData) {
        print("entering alamo ssl pinning")
        let pathToCert = NSBundle.mainBundle().pathForResource(hatchliCert, ofType: "cer")
        let localCertificate:NSData = NSData(contentsOfFile: pathToCert!)!
        self.configureAlamoFireSSLPinningWithCertificateData(localCertificate)
        self.serverTrustPolicy = ServerTrustPolicy.PinCertificates(
            // Getting the certificate from the certificate data
            certificates: [SecCertificateCreateWithData(nil, certificateData)!],
            // Choose to validate the complete certificate chain, not only the certificate itself
            validateCertificateChain: true,
            // Check that the certificate matches the host who provided it
            validateHost: true
        )
        self.serverTrustPolicies = ["www.nameOfWebsite.com": self.serverTrustPolicy!]
        self.afManager = Manager(
            configuration: NSURLSessionConfiguration.defaultSessionConfiguration(),
            serverTrustPolicyManager: ServerTrustPolicyManager(policies: self.serverTrustPolicies)
        )
    
    }
    

    这对我有用,但看起来你的公司安全情况略有不同。希望它有所帮助!