【问题标题】:iOS https / Host dont't has SSL certificateiOS https / Host 没有 SSL 证书
【发布时间】:2017-12-09 14:24:46
【问题描述】:

我遇到了问题,需要帮助。我通过 HTTPS 向服务器发送请求,但服务器没有 SSL 证书。如何绕过 iOS 中的检查 SSL 证书?

我的代码:

let loginString = String(format: "Login:Pass")
let loginData = loginString.data(using: String.Encoding.utf8)!
let base64LoginString = loginData.base64EncodedString()

let headers = [
    "content-type": "application/xml",
    "authorization": "Basic \(base64LoginString)"
]

let postData = NSData(data: "BODY".data(using: String.Encoding.utf8)!)

let request = NSMutableURLRequest(url: URL(string: "IP")!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)

request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

var session = URLSession.shared
session = URLSession(configuration: URLSessionConfiguration.default, delegate: self as? URLSessionDelegate, delegateQueue: nil)
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in

    if (error != nil) {
        print(error.debugDescription)
    } else {
        let responseData = String(data: data!, encoding: String.Encoding.utf8)!
        print(responseData)
    }
})

dataTask.resume()

我的错误:

此服务器的证书无效。您可能正在连接到伪装成“IP”的服务器,这可能会使您的机密信息面临风险。

请帮帮我。

【问题讨论】:

  • 如果这是您的服务器,请为其获取 SSL 证书。 Let's Encrypt 让这一切变得免费且非常简单。
  • 我没有这台服务器。这就是问题所在。
  • 好的,那么方明宁下面的答案应该可以解决问题。

标签: ios swift ssl https


【解决方案1】:

您需要允许Allow Arbitrary Loads。在您的 info.plist 文件中,添加以下条目

【讨论】:

  • 如果您正在制作浏览器之类的东西,这是合法的,但如果您这样做是为了解决服务器上缺少 SSL 在您的控制下(即您的应用程序自己的API)它may get your app rejected。 “从 2017 年 1 月 1 日开始,使用此标志将导致 App Store 彻底审查,应用程序开发人员必须首先解释为什么他们需要使用此例外。”
  • 没有帮助...问题是一样的。 ceejayoz,它不是浏览器。谢谢你的信息。
  • @Rorian 您要连接到哪个 URL?是http还是https?
  • @FangmingNing 我正在尝试连接到 https。
  • @Rorian 能否告诉我网址,以便我进一步帮助您?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
相关资源
最近更新 更多