2017-03-07 17 views
1

私が取り組むアプリケーションでは、支払いサービスプロバイダの3-D Secureのリダイレクトを処理する必要があります。これらのリダイレクトは、カード発行者のウェブページを指し、WKWebViewに表示され、アプリのユーザにリダイレクトされます。iOS:SSLエラー - ページがWKWebViewに読み込まれずにSafariに読み込まれる

これはWKWebViewhttps://3dsecure.csas.cz/のためにロードされない一つのケースを除いて、すべての時間を動作し、次のエラーで失敗します。

Error Domain=NSURLErrorDomain 
Code=-1200 
"An SSL error has occurred and a secure connection to the server cannot be made." 

面白いのはSafariでかで問題なく同じURL負荷ということですSFSafariViewController。でも、サーバーの証明書は大丈夫です:私は具体的には、アプリのInfo.plistファイルにNSAppTransportSecurity設定で遊んでNSAllowsArbitraryLoadsInWebContentNSAllowsArbitraryLoadsを有効にしようとしましたが、それは何の効果もありませんし

Safari screenshot - certificate for 3dsecure.csas.cz

答えて

3

転送秘密

それは3dsecure.csas.czためのサーバが転送秘密をサポートしていないことが判明:https://www.ssllabs.com/ssltest/analyze.html?d=3dsecure.csas.cz&s=194.50.240.77

完全転送秘密は、すべてのアプリケーション接続のためiOS9にし、上記のApp Transport Securityで(サファリを含まないincluding webviewsを必要としますしかし)

ATSデバッグターミナルで次のコマンドを実行しますATS診断実行

によって行うことができる前進の秘密保持をサポートしていない特定のサーバーに接続するために、アプリでWebViewのを許可

/usr/bin/nscurl --ats-diagnostics --verbose https://3dsecure.csas.cz 
アプリで

ATS例外

:dが問題の詳細とそれを解決する方法について説明します

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>3dsecure.csas.cz</key> 
     <dict> 
      <key>NSExceptionRequiresForwardSecrecy</key> 
      <false/> 
     </dict> 
    </dict> 
</dict> 

ない将来性

この例外は永遠に追加する必要がありますInfo.plistファイルに次を追加y前方の秘密をサポートしていない単一のドメイン残念ながら、すべての3-dセキュアサーバーを事前に知ることは不可能です。これは、支払いプロバイダからリダイレクトされるためです。

私が知らないのは、アプリケーション全体に影響を及ぼすことなく、あらゆるドメイン、グローバル、特定のウェブビュー内で転送秘密を設定できないことです。

関連する問題