8

iOS アプリケーションでサーバー証明書を検証しようとしています。

私が問題を抱えているデリゲートメソッドは次のとおりです。

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge

このメソッドは、「 https://twitter.com 」などのサーバーを使用するときに呼び出されます。

しかし、実稼働サーバー (政府 CA) を指定すると、このメソッドは単に呼び出されません。

この証明書は、政府証明書がインストールされていない場合、ブラウザに「この接続は信頼されていません」というメッセージが表示されるため、自己署名証明書と見なすことができると思います。

willSendRequestForAuthenticationChallenge を強制的に呼び出して自己署名証明書を確認する方法はありますか?

ありがとう!

4

1 に答える 1

7

ずいぶん前に質問されたのですが、来てくださる方にお答えしたいと思います。

私が理解しているように、認証チャレンジはホストごとに 10 分ごとに 1 回だけ呼び出されます。チャレンジの結果は、パフォーマンスのためにキャッシュされています。キャッシュは 10 分で期限切れになります。( http://en.wikipedia.org/wiki/Transport_Layer_Security#Resumed_TLS_handshake )

Apple フォーラムへの参照を持っているjblackによって、ここで良い洞察が得られます

同様の質問と問題があったとき、つまずいたのは、アプリで複数の操作に同じホストを使用したため、チャレンジは他の場所で受け入れられましたが、NSURLConnection が起動する前に期限切れになっていないため、取得できませんでした。チャレンジ(必要ありませんでした)。

ホストをこの 1 つの要求に分離しようとすると、コールバックを取得する必要があります。

それが役に立てば幸い。

于 2015-04-08T06:36:00.280 に答える