2016-07-14 4 views
1

curl의 --cert 매개 변수를 통해 내 웹 사이트에 연결할 수있는 .pem 파일이 있습니다. 나는 다음 데르 파일이 변환 :Alamofire 및 PEM 인증서

있는 OpenSSL에서는 X509 -inform PEM -outform DER -in client.pem -out cert.der

다음

내 프로젝트에 그 cert.der를로드 지금은 자신의 홈페이지에 다음 예제, Alamofire와 그것을 사용하려고 해요 : 그냥 실패하지만 그 실행하면

let serverTrustPolicy = ServerTrustPolicy.PinCertificates(
     certificates: ServerTrustPolicy.certificatesInBundle(), 
     validateCertificateChain: true, 
     validateHost: true 
    ) 

    let policyManager = ServerTrustPolicyManager(policies: ["my.domain.com" : serverTrustPolicy]) 
    manager = Alamofire.Manager(configuration: configuration, serverTrustPolicyManager: policyManager) 
    manager.request(.GET, url, parameters: params, encoding: .URLEncodedInURL, headers: nil) 
     .authenticate(usingCredential: credential) 
     .validate() 
     .responseJSON { 

내가 얻을 Alamofire 때 무엇 인 오류의 localizedDescription로 '취소' 인증에 실패했습니다.

내가 뭘 잘못하고 있니?

+0

안녕하세요, 저는 동일한 작업을 수행하려고합니다. CS를 만들어 서버에 보내고 클라이언트 인증서를 얻었습니다 .... 이제이를 결합해야합니다. 프로그래밍 방식으로 어떻게 처리 했나요? 저 좀 도와 주 시겠어요? 감사합니다 – beretis

답변

1

Alamofire cert 피닝 로직은 현재이 사용 사례를 지원하지 않습니다. 이는 서버 인증에 사용되는 클라이언트 인증서가 아닌 인증서 및 공개 키 피닝을 처리하도록 설계되었습니다. 이것이 일반적인 유스 케이스 인 경우 우리가 향후 지원할 수있는 것입니다.

그렇다면이 경우 인증 방법을 사용하는 보호 공간이있는 NSURLAuthenticationChallenge이 수신되었다고 가정합니다. 이러한 경우 챌린지 호스트를 평가 한 다음 credentialWithIdentity:certificates:persistence: API를 사용하여 NSURLCredential을 생성해야합니다. 이 신임을 완료 핸들러에 전달하면 클라이언트 인증이 서 v에 보내 져서 연결을 인증해야합니다. 더 많은 정보는 here에서 찾을 수 있습니다.

클라이언트 인증서 인증 (NSURLAuthenticationMethodClientCertificate)에는 시스템 ID와 서버 인증에 필요한 모든 인증서가 필요합니다. credentialWithIdentity : certificates : persistence :를 사용하여 NSURLCredential 객체를 만듭니다.

필자는 실제로 이런 유형의 인증을 사용할 필요가 없었습니다. 이 작업을 수행하려면 작업 재 지정 클로저를 사용하여 auth challenge SessionDelegate 클로저를 재정의해야합니다.

+0

http://veewee.github.io/blog/authenticating-with-x509-client-certificates/ 내가하는 일을 보여줍니다. 그것이 바로 인증서 인증을 할 생각입니다. 기본적으로 OAuth는 설정 및 관리의 어려움이 있으며 인증서 경로는 누군가 암호로 '암호'를 사용했기 때문에 손상되지 않았 음을 보증합니다. – Gargoyle

+0

대리자를 재정의하는 방법에 대한 자세한 내용은 나와 있지 않습니다. 작은 예제를 줄 수 있습니까? – Gargoyle

+0

신경 쓰지 마라, 나는 그것을 무시하는 방법을 알아 냈다. – Gargoyle

관련 문제