在Alamofire 1和Swift 1.2上,我使用以下代码发出请求,提交自己的客户端证书:
Alamofire.request(.POST, url!, parameters: params, encoding: .JSON)
.authenticate(usingCredential: credential)
.responseJSON { (request, response, JSON, error) in
...
}
使用Alamofire和Swift 2.0,我采用了固定证书并使用我自己的Manager
实例。但是,服务器报告未提交有效证书。
let manager = Manager(
configuration: NSURLSessionConfiguration.defaultSessionConfiguration(),
serverTrustPolicyManager: ServerTrustPolicyManager(policies:
["my.server.com": ServerTrustPolicy.PinCertificates(certificates: [
SecCertificateCreateWithData(kCFAllocatorDefault,
NSData(contentsOfFile: NSBundle.mainBundle().pathForResource("root-ca", ofType: "der")!)!)!
],
validateCertificateChain: true, validateHost: true)
])
)
我做错了什么?我无权访问服务器以查看传入请求的外观。但是,接受以下cURL请求:
curl -X POST -d '{"foo": "bar"}' https://my.server.com --cert client.pem --insecure
感谢您的帮助!
答案 0 :(得分:0)
嗯,上面的代码有效!我试图通过创建一个空白项目来隔离问题,并一次添加一个,直到找到错误。由于我无法重现它,我决定在实际项目中删除所有CocoaPods目录并重建整个工作区。事实证明这解决了这个问题。 在没有摆脱现有目录的情况下重建工作区显然是不够的。