2014-01-17 10 views
9

無効です。しかし、私はあなたがコールバックを得ることはありませんこのサーバの証明書は、私がnsurlconnectiondelegate以下の使用している場合、それは</p> <blockquote> <p>– connection:willSendRequestForAuthenticationChallenge: – connection:canAuthenticateAgainstProtectionSpace</p> </blockquote> <p>固定されることを知っている

sendAsynchronousRequest:queue:completionHandler:

を使用しようとしています。私はAppleの次のような文書を調べました

要求をダウンロードするために認証が必要な場合は、URLの一部として必要な資格情報を指定する必要があります。認証に失敗するか、資格情報が欠けている場合、接続は資格情報なしで続行しようとします。

私はそれを行う方法を理解できませんでした。私が見上げたときに私はこのプライベートコールを持っていました。

+(void)setAllowsAnyHTTPSCertificate:(BOOL)inAllow forHost:(NSString *)inHost;

どうすればいいですか?続き

は、証明書エラーである私は

The certificate for this server is invalid. You might be connecting to a server that is pretending to be “example.com=0x8b34da0 {NSErrorFailingURLStringKey= https://example.com/test/ , NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, NSErrorFailingURLKey= https://example.com/test/ , NSLocalizedDescription=The certificate for this server is invalid. You might be connecting to a server that is pretending to be “example.com” which could put your confidential information at risk., NSUnderlyingError=0xa26c1c0 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be “example.com” which could put your confidential information at risk.", NSURLErrorFailingURLPeerTrustErrorKey=

答えて

3

あなたは、デリゲートと悪い本命

  • 使用NSConnectionを許可するように

    • CFNetworkingのいずれかのドロップをしようとしている方法とundoc'd方法でそれを修正することはできません
    • 見つかったプライベートAPIを使用

    すべてが不良です。他の2つの方法はアプリストアでは安全ではありません。あなたがAFNetworkingを使用している場合は、最も簡単で最もクリーン

  • +0

    この問題の原因となったサーバーへのコールが再ルーティングされたことが分かります。サーバーを直接指し示すことで修正しました。 – pa12

    +0

    @ Daij-DjanプライベートAPIが使用されている場合、Appがプロダクション用である場合にApp Storeへの提出中に、Appは拒否されます。 –

    +0

    はい、書いてあります。「CFNetworkは今のところリンゴでOKですが、他の2つの方法はアプリストアでは安全ではありません」 –

    0

    を取得エラーです。プログラム/ osが証明書を無視するように設定を変更するか、またはurl /証明書を信頼できるリストに追加する必要があります。

    申し訳ありませんが認証、証明書は認証です。私は見て、私はこの記事を見つけた。

    問題が解決するかどうかはわかりませんが、基本的には、ドキュメントに証明書がどのように格納されているかをカバーしていません。

    http://www.cocoanetics.com/2009/11/ignoring-certificate-errors-on-nsurlrequest/

    +0

    あなたは正しいです。私の悪い。これを行う方法を説明できますか? – pa12

    +0

    -1このようにすることはできません。引用:「誰かがこのメソッドを使用して自分のアプリを拒否したという報告を受けました。 –

    3

    のthats、あなたはこのコードを使用することができます(!ただ、一時クライアント側のソリューションとして)

    AFHTTPSessionManager * apiManager = [AFHTTPSessionManager initWithBaseURL:[NSURL URLWithString:baseURL]; 
    AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; 
    policy.allowInvalidCertificates = YES; 
    apiManager.securityPolicy = policy; 
    
    +1

    AFNetworkingを使用しないとどうなりますか? –

    +1

    @JayprakashDubeyよく、受け入れられた答えを見てください – skywinder

    8

    あなたがウェブサーバサーバー信頼認証を求める場合は、適切な処置で適切に応答する必要があります。 connection:willSendRequestForAuthenticationChallenge:代理メソッドを実装し、SecTrustRefを使用してそれを認証する必要があります。

    詳しい情報はここで見つけることができます: - https://developer.apple.com/library/ios/technotes/tn2232/_index.html

    これは、エラーを修正するための私のコードだった:

    - (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 
    { 
        NSURLProtectionSpace *protectionSpace = [challenge protectionSpace]; 
    
        id<NSURLAuthenticationChallengeSender> sender = [challenge sender]; 
    
        if ([[protectionSpace authenticationMethod] isEqualToString:NSURLAuthenticationMethodServerTrust]) 
        { 
         SecTrustRef trust = [[challenge protectionSpace] serverTrust]; 
    
         NSURLCredential *credential = [[NSURLCredential alloc] initWithTrust:trust]; 
    
          [sender useCredential:credential forAuthenticationChallenge:challenge]; 
        } 
        else 
        { 
         [sender performDefaultHandlingForAuthenticationChallenge:challenge]; 
        } 
    } 
    
    +0

    恐ろしい、ありがとう。 –

    +0

    ベストソリューション、感謝の男:) –

    1

    この問題は、あなたがブロックにしようとしている方法で固定することはできません。代理人を設定し、認証の挑戦代理人を実装して証明書の検証をバイパスする必要があります。 最良の解決策は、適切な証明書を作成することです(自己署名していないことを確認してください)。

    0

    、このエラーは、必要なURLをブロックされたため、私のファイアウォールに発生しました。ファイアウォールの制限を解除しても正常に機能しています

    関連する問題

     関連する問題