2016-07-14 11 views
1

curlの--certパラメータを使用して、私のWebサイトに正常に接続する.pemファイルがあります。私は、DERファイルに変換すること: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

こんにちは、私はcsrを作成し、サーバーに送信し、クライアント証明書を取得しました....今、私はそれをどのようにプログラムで行うのですか?手伝っていただけませんか?ありがとうございます – beretis

答えて

1

Alamofire certのピン設定ロジックは、現在この使用例をサポートしていません。これは、サーバーとの認証に使用されるクライアント証明書ではなく、証明書と公開鍵の固定を処理するように設計されています。これが一般的な使用事例である場合、これは将来サポートできるものです。

この場合、の認証方法を持つ保護スペースを使用してNSURLAuthenticationChallengeを受け取っていると仮定しています。このような場合は、チャレンジのホストを評価し、credentialWithIdentity:certificates:persistence: APIを使用してNSURLCredentialを作成する必要があります。この信任状を補完ハンドラに渡すことにより、接続を認証するためにクライアント証明書をサーバに送信する必要があります。詳細はhereをご覧ください。

クライアント証明書認証(NSURLAuthenticationMethodClientCertificate)では、サーバーとの認証に必要なシステムIDとすべての証明書が必要です。 credentialWithIdentity:certificates:persistence:を使用してNSURLCredentialオブジェクトを作成します。

これまでにこの種の認証を使用する必要はありませんでした。この作業を行うには、タスクオーバーライドクロージャを使用して、認証チャレンジSessionDelegateクロージャをオーバーライドする必要があります。

+0

http://veewee.github.io/blog/authenticating-with-x509-client-certificates/私がやっていることを示しています。そこで、私は証明書認証を行うというアイディアを得ました。基本的にOAuthはセットアップと管理に苦労し、誰かが自分のパスワードに「パスワード」を使用したために証明書のルートが妥協することはありません。 – Gargoyle

+0

デリゲートをどのようにオーバーライドするかは完全にはわかりません。あなたは小さな例を挙げることができますか? – Gargoyle

+0

心配しないで、私はそれを無効にする方法を考え出しました。 – Gargoyle

関連する問題