2017-01-29 4 views
0

私たちの安全なウェブサーバーから情報を読み取る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:シナリオを更新し、正しくない情報を修正しました。

+0

404が見つかりませんでしたので、セキュリティ関連の問題のようには見えません。おそらくあなたは別のサーバーにリダイレクトされますか? DNS解決があなたと同じIPを返すことを確認しましたか? – jesse

+0

@Jesseあなたの提案に基づいて、DNS解決やHTTPとHTTPSのページをサーバ上でテストするためのテストアプリケーションを作成しました。私はそれをTest Flightにプッシュし、私の友人がどのように行くのかを見てみましょう。 – RowanPD

答えて

0

私の問題が見つかりました。少し戸惑っていますが、これが他の人に役立つとすれば、ここに行きます。 404は何かを教えようとしていました。

私の国では、すべてのISPは引き続きIPv4を使用しています。私の友人は米国に移り、そこのすべてはIPv6です。基本的には、偶然、IPv6/SSL設定をIPv4/SSLと同じ "HTML"ディレクトリに設定するようにApacheを設定していないので、404とか、私のためのものではありません。しかし、ポート80のIPv6は正しく設定されていました。私はIPv6が使えないので、IPv6をテストできませんでした。

サーバ上でwgetを使用した後にわかりました。私はindex.htmlページでヒットすることはできますが、他には何もありません。私は余分な "html"ディレクトリを見つけました。したがって、それを指摘したIPv6設定が見つかりました。ログには何もなかった。なぜなら、それらは間違ったログだったからだ(目を転がして、ノブのように感じる)。

私はIPv6プロキシページを試しましたが、それは分かりません。私のサイトを修正しても、IPv6でアプリが動いても、プロキシサイトはSSLエラーを返す。私が禁止した古いプロトコルを使用している可能性があります。かなり赤ちゃん。

関連する問題