ios - 即使在手动安装证书后也无法在 iOS 模拟器上通过 SSL 握手

标签 ios ssl ios-simulator ssl-certificate

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

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

背景资料:

  • 该应用程序不是在 Xcode 中构建的,它可以通过桌面和设备上的应用程序访问。
  • 苹果设备(不是我的模拟器)有预先制定的公司政策,允许他们访问该应用程序。
  • 桌面应用仅在公司 wifi 上运行。
  • 我正在通过 appium 启动模拟器,并在应用程序上手动输入登录信息。

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

  1. 将证书(从应用程序 URL)拖放到模拟器上 .. 安装。然后转到应用程序并尝试登录。
  2. 拖动证书并安装后。我去了 safari 中的应用程序 URL,我成功地访问了它。但是,在出现相同的 SSL 错误后尝试登录应用程序。

如有任何建议,我们将不胜感激

卢克

最佳答案

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

  1. 将 .cer 文件包含到 xcode 的应用程序目录中。

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

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)
    )

}

这对我有用,但您在企业安全方面的情况似乎略有不同。希望对您有所帮助!

关于ios - 即使在手动安装证书后也无法在 iOS 模拟器上通过 SSL 握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37612710/

相关文章:

ios - 当 SwiftUI 中其他变量更新时如何修改/重置 @State

ssl - 使用 SSL 从 AIX 机器连接到远程队列管理器

iphone - iOS 4 卡住应用程序

iphone - 在 iOS App 中嵌入 youtube 视频

ios - 有条件地在 UITabBar 选择上显示 View Controller

iphone - 插入读卡器后,AudioServicesPlaySystemSound 在 iPhone 中无法正常工作

iphone - 我用的是CAEmitterLayer,但是app应该也支持iOS4.0,怎么办?

android - OkHttp3 hostnameVerifier 由 : javax.net.ssl.SSLException : Read error: ssl=0xc8cf1fc8: I/O error during system call, 对等方重置连接引起

没有为 ingress-nginx 后端配置 SSL 直通

ios - Xcode 更改我的应用程序的定位服务