【问题标题】:Turn off or bypass SSL Certificate Verification in Swift iOS在 Swift iOS 中关闭或绕过 SSL 证书验证
【发布时间】:2020-05-20 02:47:58
【问题描述】:

我的服务器证书已过期。

我想绕过或关闭我的 swift iOS 应用的证书验证,以便测试应用功能。

我需要这个只是为了测试,而不是生产实时应用程序。所以没有人关心安全。

如何在 Swift iOS 中实现这一点。

我正在使用 Alamofire 库来处理网络请求。

如何做到这一点。

【问题讨论】:

    标签: ios swift iphone ssl-certificate


    【解决方案1】:

    将下面的代码放入 info.plist 文件中。

    <key>NSAppTransportSecurity</key>
    <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    </dict>
    

    【讨论】:

    • 感谢@sanjeev。但这已经在我的 info.plist 中了。没用,我又试了。
    【解决方案2】:

    尝试类似:

    import Foundation
    import Alamofire
    
    class NetworkManager {
    
        static let shared = NetworkManager()
    
        var unsecure: SessionManager!
        var serverTrustPolicies: [String: ServerTrustPolicy] = ["unsecureSslHostname":.disableEvaluation]
    
        private init () {
            self.unsecure = { () -> SessionManager in
                let configuration = URLSessionConfiguration.default
                configuration.httpAdditionalHeaders = SessionManager.defaultHTTPHeaders
                return SessionManager(
                    configuration: configuration,
                    serverTrustPolicyManager: ServerTrustPolicyManager(policies: self.serverTrustPolicies)
                )
            }()
        }
    }
    

    之后NetworkManager.shared.unsecure 将返回 Alamofire SessionManager,它可用于向具有不安全 SSL 证书的主机发送请求。

    【讨论】:

    • 感谢@Sergey Di。我正在使用此代码为“SessionManager”和“ServerTrustPolicy”获取“使用未声明的类型”。我正在通过 Carthage 使用“Alamofire/Alamofire”“5.0.0-beta.2”。
    • @SajidZeb 你尝试使用 4.x 版本吗?
    • @SajidZeb 你确定你没有忘记添加导入 Alamofire 吗?
    • 不,我不想降级版本。我正在使用 5。也是的,这条线在顶部。进口阿拉莫火
    • @SajidZeb 我认为问题是由于 Alamofire 5 而发生的。SessionManager 已重命名为 Session 并进行了一些其他更改。抱歉,我现在无法在 Alamofire 5 上进行测试。
    猜你喜欢
    • 2017-08-29
    • 1970-01-01
    • 2021-02-08
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 2021-06-22
    相关资源
    最近更新 更多