Ara*_*ren 5 ssl swift alamofire ios9
我对Swift项目进行了以下升级
连接到自签名(测试)Web服务时出现以下错误.
错误信息
2015-11-12 21:46:13.045 [72695:5258083] CFNetwork SSLHandshake失败(-9801)2015-11-12 21:46:13.046 [72695:5258083] NSURLSession/NSURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9801)2015 -11-12 21:46:13.051 [错误] [DeviceInfo.swift:277] generateUserToken>处理generateUserToken()时出错:可选(错误域= NSURLErrorDomain代码= -1200"发生SSL错误并且安全连接到无法生成服务器."UserInfo = {_ kCFStreamErrorCodeKey = -9801,NSLocalizedRecoverySuggestion =您是否还要连接到服务器?,NSUnderlyingError = 0x7ffa99a0b8c0 {错误域= kCFErrorDomainCFNetwork代码= -1200"(null)"UserInfo = {_ kCFStreamPropertySSLClientCertificateState = 0 ,_kCFNetworkCFStreamSSLErrorOriginalValue = -9801,_kCFStreamErrorDomainKey = 3,_kCFStreamErrorCodeKey = -9801}},NSLocalizedDescription =发生SSL错误,无法建立与服务器的安全连接.
我已根据https://github.com/Alamofire/Alamofire#security实现了以下代码来禁用SSL验证
class CustomServerTrustPolicyManager: ServerTrustPolicyManager {
override func serverTrustPolicyForHost(host: String) -> ServerTrustPolicy? {
var policy: ServerTrustPolicy?
policy = ServerTrustPolicy.DisableEvaluation
return policy
}
}
public class NetworkManager {
static let sharedInstace = NetworkManager()
let defaultManager : Manager = {
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"myservice.com": .DisableEvaluation
]
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.HTTPAdditionalHeaders = Alamofire.Manager.defaultHTTPHeaders
return Alamofire.Manager(
configuration: configuration,
serverTrustPolicyManager: CustomServerTrustPolicyManager(policies: serverTrustPolicies)
)
}()
}
Run Code Online (Sandbox Code Playgroud)
另外,我在info.plist中添加了以下条目,但没有运气.
<dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>myservice.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>NSRequiresCertificateTransparency</key>
<true/>
</dict>
</dict>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
有没有人使用Alamofire和iOS9成功连接自签名服务?请指教.
| 归档时间: |
|
| 查看次数: |
713 次 |
| 最近记录: |