私たちの安全なウェブサーバーから情報を読み取るiOSアプリがあります。私の友人が米国に戻ってくるまで、すべてがうまくいっていました。今では彼の携帯電話は、インストール後、または電話データから無線LANに切り替わった後、アプリが初めて実行された後に初めてデータをダウンロードします。このアプリは毎回完璧に動作し、私は米国外にいる(彼が米国に移る前に彼と同じように)。彼の親戚も同じ問題を報告している。iOSアプリがセキュリティ保護されたサーバーへの2回目のアクセスに失敗する
私たちはどちらもiOS 10.2を実行しているiPhone 6を持っています。私は開発コードを持っていますが、彼は開発者ではなく、MacBookを持っていないので、電話機を直接デバッグすることはできません。私は同じバイナリを持っていることを確認するために、Test Flightからアプリをダウンロードしました。
(参考:以前の自己署名証明書がサーバーに残っているという問題を修正しました。SSLエラーの問題を引き起こしました.TLS/networking info.plistのエントリは、免除コード=いいえ)
私たちのサーバーは米国でホストされており、PHPでApache 2.4.18を実行し、商用証明書を持っています。私は様々な証明書検査官を走らせています。彼らは証明書が完全に働くと言っています(私がForwarding Secrecyを追加する前でさえ)。私は、SSLが何をしているのかを見るためにApacheのログを "trace6"にクランクしましたが、サーバーにアクセスする2回目の試みは、ほとんどの場合、サイトのaccess.logまたはerror.logに何も記録しません。
時折、彼は(私は少しredactingをやった)アプリで二度目の試みでApacheサイトのerror.logでこれを取得します:ここに
[Sun Jan 29 18:27:48.129214 2017] [ssl:info] [pid 6690] [client 70.211.19.XXX:8740] AH01964: Connection to child 8 established (server (redacted).net:443)
[Sun Jan 29 18:27:48.129312 2017] [ssl:trace2] [pid 6690] ssl_engine_rand.c(126): Seeding PRNG with 656 bytes of entropy
[Sun Jan 29 18:27:48.129354 2017] [ssl:trace3] [pid 6690] ssl_engine_kernel.c(1970): [client 70.211.19.XXX:8740] OpenSSL: Handshake: start
[Sun Jan 29 18:27:48.129365 2017] [ssl:trace3] [pid 6690] ssl_engine_kernel.c(1979): [client 70.211.19.XXX:8740] OpenSSL: Loop: before/accept initialization
[Sun Jan 29 18:27:48.129376 2017] [ssl:trace4] [pid 6690] ssl_engine_io.c(2065): [client 70.211.19.XXX:8740] OpenSSL: I/O error, 11 bytes expected to read on BIO#5566ac3b3e20 [mem: 5566ac3ef790]
[Sun Jan 29 18:27:48.129380 2017] [ssl:trace3] [pid 6690] ssl_engine_kernel.c(2008): [client 70.211.19.XXX:8740] OpenSSL: Exit: error in SSLv2/v3 read client hello A
[Sun Jan 29 18:27:48.129385 2017] [ssl:debug] [pid 6690] ssl_engine_io.c(1227): (70014)End of file found: [client 70.211.19.XXX:8740] AH02007: SSL handshake interrupted by system [Hint: Stop button pressed in browser?!]
[Sun Jan 29 18:27:48.129390 2017] [ssl:info] [pid 6690] [client 70.211.19.XXX:8740] AH01998: Connection closed to child 8 with abortive shutdown (server (redacted).net:443)
一つの懸念は、OpenSSL」を含む行です。終了:SSLv2/v3でクライアントの読み込みエラーが発生しました。 " TLS 1.2は当然サーバー上にあり、SSLv3は無効になっています。
テストとして、DNS、HTTP、HTTPSをテストするためのテストアプリケーションを作成し、httpsページで404エラーのみを取得しました。私はいつも私の好きなように私の電話から任意のページにアクセスすることができます - まさに同時に彼は404を取得します。私はその後彼にhttps:\\ www.google.comにアクセスさせ、毎回彼のために働きます。彼は次に私たちのサーバーを試して、インスタント404とサーバーのログに何もしません。
私は繰り返します - 全く問題はありません。同じ電話機、同じiOS、同じバイナリ。
これまで誰もがこのようなことに遭遇しましたか?
EDIT:シナリオを更新し、正しくない情報を修正しました。
404が見つかりませんでしたので、セキュリティ関連の問題のようには見えません。おそらくあなたは別のサーバーにリダイレクトされますか? DNS解決があなたと同じIPを返すことを確認しましたか? – jesse
@Jesseあなたの提案に基づいて、DNS解決やHTTPとHTTPSのページをサーバ上でテストするためのテストアプリケーションを作成しました。私はそれをTest Flightにプッシュし、私の友人がどのように行くのかを見てみましょう。 – RowanPD