总结:努力在我的 iOS 模拟器上通过 SSL 握手。
我正试图在我的 iOS 模拟器 Xcode 7.2 模拟器 9.2 上通过 SSL 握手。我已从应用程序网页 (URL) 中提取 .cer 文件并手动安装到模拟器中,但未能成功通过模拟器中的 SSL 握手。
背景资料:
- 该应用程序不是在 Xcode 中构建的,它可以通过桌面和设备上的应用程序访问。
- 苹果设备(不是我的模拟器)有预先制定的公司政策,允许他们访问该应用程序。
- 桌面应用仅在公司 wifi 上运行。
- 我正在通过 appium 启动模拟器,并在应用程序上手动输入登录信息。
我尝试过的。 (两者都是在公司 WIFI 上尝试的)
- 将证书(从应用程序 URL)拖放到模拟器上 .. 安装。然后转到应用程序并尝试登录。
- 拖动证书并安装后。我去了 safari 中的应用程序 URL,我成功地访问了它。但是,在出现相同的 SSL 错误后尝试登录应用程序。
如有任何建议,我们将不胜感激
卢克
最佳答案
我在让我的应用程序使用我的 SSL 证书时遇到了类似的问题,并通过以下方式解决了该问题:
将 .cer 文件包含到 xcode 的应用程序目录中。
使用 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/