2015-09-21 9 views
3

На Alamofire 1 и Swift 1.2 я использовал следующий код, чтобы оформить заявку, представив свой собственный сертификат клиента:Использование сертификата клиента с Alamofire 2,0

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

Ну, код выше работает! Я попытался изолировать проблему, создав пустой проект и добавить одну часть за раз, пока не нашел ошибку. Поскольку я не мог воспроизвести его, я решил избавиться от всех каталогов CocoaPods в моем фактическом проекте и перестроить всю рабочую область. Оказывается, это решило проблему. Перестроить рабочее пространство, не избавившись от существующих каталогов, по-видимому, было недостаточно.

Смежные вопросы