2016-08-07 34 views
11

私はI/O 2016で導入された新しいFireBase SDKを使用しており、私のアプリケーションと統合した後にこのエラーが発生しています。これはアプリの起動時に発生します。FireBaseエラー-9806、SSLエラー-1200

2016-08-06 06:28:06.237 MyApp[49084:2511094] CFNetwork SSLHandshake failed (-9806) 
2016-08-06 06:28:06.238 MyApp[49084:2511094] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9806) 
2016-08-06 06:28:06.453 MyApp[49084:2511094] CFNetwork SSLHandshake failed (-9806) 
2016-08-06 06:28:06.454 MyApp[49084:2511094] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9806) 

2016-08-06 06:28:06.854 MyApp[49084:2510825] <Firebase/Network/ERROR> Encounter network error. Error: Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made., NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, NSUnderlyingError=0x7bf93200 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, _kCFNetworkCFStreamSSLErrorOriginalValue=-9806, _kCFStreamErrorCodeKey=-9806, _kCFStreamErrorDomainKey=3, kCFStreamPropertySSLPeerTrust=<SecTrustRef: 0x7bc97840>, kCFStreamPropertySSLPeerCertificates=<CFArray 0x7bcf2420 [0x477d1f8]>{type = immutable, count = 3, values = (
0 : <cert(0x7bc96990) s: *.googleapis.com i: Google Internet Authority G2> 
1 : <cert(0x7bc96fb0) s: Google Internet Authority G2 i: GeoTrust Global CA> 
2 : <cert(0x7bc97360) s: GeoTrust Global CA i: Equifax Secure Certificate Authority>)}}}, _kCFStreamErrorCodeKey=-9806, NSErrorFailingURLStringKey=https://play.googleapis.com/log, NSErrorPeerCertificateChainKey=<CFArray 0x7bcf2420 [0x477d1f8]>{type = immutable, count = 3, values = (
0 : <cert(0x7bc96990) s: *.googleapis.com i: Google Internet Authority G2> 
1 : <cert(0x7bc96fb0) s: Google Internet Authority G2 i: GeoTrust Global CA> 
2 : <cert(0x7bc97360) s: GeoTrust Global CA i: Equifax Secure Certificate Authority>)}, NSErrorClientCertificateStateKey=0, NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef: 0x7bc97840>, NSErrorFailingURLKey=https://play.googleapis.com/log} 

2016-08-06 06:28:06.856 MyApp[49084:] <FIRAnalytics/ERROR> Encounter network error. Error: Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made., NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, NSUnderlyingError=0x7b968c00 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, _kCFNetworkCFStreamSSLErrorOriginalValue=-9806, _kCFStreamErrorCodeKey=-9806, _kCFStreamErrorDomainKey=3, kCFStreamPropertySSLPeerTrust=<SecTrustRef: 0x7b9abbb0>, kCFStreamPropertySSLPeerCertificates=<CFArray 0x7b8a2420 [0x477d1f8]>{type = immutable, count = 3, values = (
    0 : <cert(0x7b9aaf40) s: *.google-analytics.com i: Google Internet Authority G2> 
    1 : <cert(0x7b9ab280) s: Google Internet Authority G2 i: GeoTrust Global CA> 
    2 : <cert(0x7b9ab630) s: GeoTrust Global CA i: Equifax Secure Certificate Authority> 
)}}}, _kCFStreamErrorCodeKey=-9806, NSErrorFailingURLStringKey=https://app-measurement.com/config/app/1:926356559846:ios:74ac6682756d2bd6?app_instance_id=7590DD8CDAF44A3ABE3F39478A9EB2BE&platform=ios&gmp_version=3201, NSErrorPeerCertificateChainKey=<CFArray 0x7b8a2420 [0x477d1f8]>{type = immutable, count = 3, values = (
    0 : <cert(0x7b9aaf40) s: *.google-analytics.com i: Google Internet Authority G2> 
    1 : <cert(0x7b9ab280) s: Google Internet Authority G2 i: GeoTrust Global CA> 
    2 : <cert(0x7b9ab630) s: GeoTrust Global CA i: Equifax Secure Certificate Authority> 
)}, NSErrorClientCertificateStateKey=0, NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef: 0x7b9abbb0>, NSErrorFailingURLKey=https://app-measurement.com/config/app/1:926356559846:ios:74ac6682756d2bd6?app_instance_id=7590DD8CDAF44A3ABE3F39478A9EB2BE&platform=ios&gmp_version=3201} 

答えて

4

問題はネットワークにあります。ときには、ネットワークの状態が遅すぎてネットワークがタイムアウトし、SSLのチェックが間に合わなくなることがあります。これは、より良いセキュリティが必要なiOS 9.xでも頻繁に発生します。どのような種類のiOSバージョンとどのデバイスを実行しましたか?それはいつも始まりに起こったのですか?

+0

私はiOS 9.3をシミュレータで実行しています。それは非常に頻繁に起こります。私はFireBaseと統合しているだけで、まだこのバージョンを本番環境に導入していません。 – ArdenDev

+0

私は再現しようとしていましたが、それは私が非常に貧弱な無線接続であったときに最も頻繁に発生しました[リンク](https://www.dropboxforum.com/hc/en-us/community/posts/201866899-Dropbox-throwing- SSLエラー - 一部のユーザー向け)良いwifiで、問題はほとんど起こらなかった。私の研究から、コード-9806は何か接続が間違っていることを意味し、接続は中断されたので、ハンドシェイクは完了しませんでした。 Firebase Analyticsは後でデータのアップロードを再試行するため、問題はないと思います。 – adbitx

+1

この問題の追跡に役立つデバッグログはありますか?私はこの問題が非常に頻繁に起きると言いましたが、私はWIFIを利用しています – ArdenDev

1

これは、iOS 9以降のApp Transport Securityによって発生します。アップルはrestrictions on SSL certificatesにすべてのサーバーが合致していないと訴えた。

このメッセージを生成しているサーバーを所有していた場合は、より安全で最新のSSLサーバー証明書に更新することをお勧めします。しかし、それはGoogle/Firebaseのサーバーなので、このドメイン専用のApp Transport Securityを無効にするだけです。ここで

は、ドメインをリスト一部です:

NSErrorFailingURLStringKey=https://app-measurement.com... 

あなたは次のようにあなたのInfo.plistファイルには、このドメインを追加する必要があります。

<key>NSExceptionDomains</key> 
<dict> 
    <!-- Firebase/Google Analytics server - Disables App Transport Security for this specific domain --> 
    <key>app-measurement.com</key> 
    <dict> 
     <key>NSExceptionAllowsInsecureHTTPLoads</key> 
     <true/> 
    </dict> 
</dict> 

はAから安全でない接続を許可することに注意してくださいサードパーティのサーバーが潜在的にあなたのアプリケーションにセキュリティの脆弱性を導入します。ただし、アナリティクスサーバーに機密データを送信していない場合(これはやめてはいけません)、露出は最小限に抑える必要があります。

Apple's ATS documentationによれば、次回のApp Storeへの提出時にATS例外を含めてレビューが行われるため、これも考慮する必要があります。