最近のアクセス:
[App Transport Security] プロパティグループ

このプロパティグループは、スマートデバイスブジェクトの [ Main Program ] が True の場合に利用でき、 [ Main object properties ] プロパティグループの下にあります。
特定のサーバーとの安全でない通信が可能になります。

はじめに


iOS 9 以降では、特に指定がない限り、あらゆるネットワーク接続を安全に保護することが求められています。この機能は App Transport Security と呼ばれ、Apple のドキュメントで次のように解説されています:
App Transport Security は、アプリケーションと Web サービスとの接続のセキュリティを強化する機能です。この機能は、安全な接続に関するベストプラクティスに準拠する、既定の接続要件で構成されます。アプリケーションで既定の動作を上書きしたり、Transport Security を無効にしたりすることもできます。
Android の場合は Android バージョン 9 以降で実行可能です。正式な覚書:
Android は、ユーザー、ユーザーのデバイス、ユーザーのデータの安全性の確保に全力を注いでいます。データの安全性を確保する方法の 1 つは、Android デバイスでやり取りされるすべてのデータを、送信中に Transport Layer Security (TLS) で保護することです。Android P Developer Preview で公表したように、Android P を対象とするアプリケーションでは暗号化されていない接続を既定で防止することによって、保護をさらに強化しています。
開発者は、これらのプロパティを使用して既定の OS 設定を上書きできます。

プロパティ

[ Allows Arbitrary Loads ] プロパティ

False 安全でない接続を [ Exception Domains ] プロパティにそれぞれ宣言する必要があります。
True 例外ドメイン (後述のプロパティを参照) を除き、アプリケーションに対する SSL チェックを無効にします。

既定値は False です。

このプロパティの値を True にする方が設定が簡単ですが、このセキュリティ機能を無効にすることは推奨されません。
注: Android ジェネレーターを使用している場合、このプロパティで HTTP クリアテキスト (平文) 通信が可能になります。
 

[ Allows Arbitrary Loads In Media ] プロパティ

[ Allow Arbitrary Loads ] プロパティと似ていますが、メディアコンテンツ用に使用します。

[ Allows Arbitrary Loads In Web Content ] プロパティ

[ Allow Arbitrary Loads ] プロパティと似ていますが、Web コンテンツ用に使用します。
 

[ Allows Local Networking ] プロパティ

[ Allow Arbitrary Loads ] プロパティと似ていますが、ローカルリソースのロード用に使用します。
 

[ Exception Domains ] プロパティ

要件に準拠していないドメインのリストです。
それぞれの例外ドメインについて、一連のプロパティを設定する必要があります。
イメージ:29370.png

Domain Name

ドメインの名前です。
例: www.testdomain.com

Include Subdomains

最上位ドメインのすべてのサブドメインに対して上書きを適用するブール値です。
例: [ Domain Name ] が testdomain.com の場合、www.testdomain.com と sample.testdomain.com の両方がこれらの設定を使用します。
False が既定値です。

Third Party

ドメインの制御を開発者が担当していない場合は、True に設定する必要があります。たとえば、アプリケーションの外部にあるドメインなどです。
False が既定値です。

Minimum TLS Version

接続の最小 TLS バージョンを指定します。
既定値は 1.2 です。

Requires Forward Secrecy

接続で Forward Secrecy (前方秘匿性) を許可しない場合は False に設定します。
True が既定値です。

Allow Insecure HTTP Loads

すべての接続で HTTPS を使用するという要件を上書きするためのブール値です。このキーを使用すると、証明書がない場合や証明書に問題 (自己署名、有効期限切れ、ホスト名不一致) がある場合でも、ドメインにアクセスできるようになります。
False が既定値です。

Requires Certificate Transparency

Certificate Transparency (証明書の透明性) を必須にするかどうかを指定するブール値です。
False が既定値です。
 

  • 場合によっては、GeneXus によって例外が自動的にアプリケーションの設定に追加されることがあります (Google Analytics、Facebook など)。

トラブルシューティング

これらのプロパティが正しく設定されていないと、アプリケーションが想定どおりに動作しなくなります。より具体的に言うと、一部のネットワーク接続では次のようなエラーが返される場合があります(1):
    "requestFail": {
        "url": "https://www.your.domain.com/some/url",
        "error": {
            "domain": "NSURLErrorDomain",
            "localizedDescription": "An SSL error has occurred and a secure connection to the server cannot be made.",
            "code": -1200
        }
    }
これは、iOS 9 で要求されている設定がネットワークドメイン www.your.domain.com でサポートされていないことを意味します。
OS X のインストール環境で nscurl ユーティリティを使用してドメインをチェックできます。ターミナルウィンドウに次のように入力します:
/usr/bin/nscurl --ats-diagnostics https://www.your.domain.com
このツールにより一連のチェックが実行され、ドメインに必要な設定が出力されます。
たとえば、出力は次のようになります (以下は抜粋です):
---
TLSv1.1 with PFS disabled and insecure HTTP allowed
2015-10-22 15:10:34.979 nscurl [ 50131:341576 ]  CFNetwork SSLHandshake failed (-9801)
2015-10-22 15:10:35.038 nscurl [ 50131:341576 ]  CFNetwork SSLHandshake failed (-9801)
2015-10-22 15:10:35.053 nscurl [ 50131:341576 ]  CFNetwork SSLHandshake failed (-9801)
2015-10-22 15:10:35.054 nscurl [ 50131:341576 ]  NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9801)
Result : FAIL
---
TLSv1.0 with PFS disabled and insecure HTTP allowed
Result : PASS
---
GeneXus では、TLS1.0 に設定し、 [ Requires Forward Secrecy ] を False に設定する必要があります。

(1) Xcode からデバッグモードで実行すると、テキストがコンソールに表示されます。
: nscurl を使用するには、Mac OS 10.11 (El Capitan) が必要です (http://stackoverflow.com/questions/32723623/how-do-i-install-nscurl-on-mac-os-x-10-10-yosemite を参照)

使用可能バージョン

iOS では GeneXus X Evolution 3 Upgrade 5 以降で利用できます。
Android では GeneXus 16 Upgrade 3 以降で使用できます。 


サブページ
Created: 20/01/08 18:58 by Admin Last update: 21/05/21 03:35 by Admin
カテゴリ
Powered by GXwiki 3.0