追加情報

improve this page | report issue

iOS アプリケーションにおけるビットコードでの作業

  • アプリケーション認証性セキュリティー検査は、ビットコードではサポートされません。
  • watchOS アプリケーションの場合は、ビットコードが有効になっている必要があります。

ビットコードを有効にするには、Xcode プロジェクトで「Build Settings」タブに移動し、「Enable Bitcode」「Yes」に設定します。

iOS アプリケーションでの TLS セキュア接続の適用

iOS 9 以降、すべてのアプリケーションでバージョン 1.2 の Transport Layer Security (TLS) プロトコルを適用する必要があります。 開発目的のため、このプロトコルを無効にして iOS 9 の要件を回避することができます。

Apple の App Transport Security (ATS) は、アプリケーションとサーバーの間の接続にベスト・プラクティスを適用する iOS 9 の新しいフィーチャーです。 デフォルトでは、このフィーチャーはセキュリティーを向上させるいくつかの接続要件を適用します。 これには、クライアント・サイドの HTTPS 要求とサーバー・サイド証明書、および前方秘匿性を使用して Transport Layer Security (TLS) バージョン 1.2 に準拠する接続暗号が含まれます。

開発目的のため、App Transport Security Technote で説明するように、アプリケーション内の info.plist ファイルで例外を指定することによって、デフォルトの動作をオーバーライドすることができます。 ただし完全な実稼働環境では、すべての iOS アプリケーションで、正しく機能するために TLS セキュア接続を適用する必要があります。

非 TLS 接続を有効にするには、project-name\Resources フォルダーにある project-name-info.plist ファイル内に、以下の例外が記述されている必要があります。

<key>NSExceptionDomains</key>
    <dict>
        <key>yourserver.com</key>
    
            <dict>
            <!--Include to allow subdomains-->
            <key>NSIncludesSubdomains</key>
            <true/>

            <!--Include to allow insecure HTTP requests-->
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>

実働の準備手順

  1. このページの前述のコードを削除またはコメント化します。
  2. 以下のエントリーを使用して HTTPS 要求をディクショナリーに送信するようにクライアントをセットアップします。

    <key>protocol</key>
    <string>https</string>
    
    <key>port</key>
    <string>10443</string>
    

    SSL ポート番号は、サーバー上の server.xml 内の httpEndpoint 定義で定義されています。

  3. TLS 1.2 プロトコル用に有効になっているサーバーを構成します。 詳しくは、『Configuring MobileFirst Server to enable TLS V1.2』を参照してください
  4. ご使用のセットアップに適用される暗号および証明書の設定を行います。 詳しくは、「App Transport Security Technote」、『Secure communications using Secure Sockets Layer (SSL) for WebSphere Application Server Network Deployment』、および『Liberty プロファイルの SSL 通信の使用可能化』を参照してください。

iOS での OpenSSL の有効化

MobileFirst iOS SDK は、暗号化にネイティブ iOS API を使用しています。 iOS アプリケーションで OpenSSL の暗号化ライブラリーを使用するように、IBM Mobile Foundation を構成できます。

暗号化/暗号化解除は、WLSecurityUtils.encryptText()WLSecurityUtils.decryptWithKey() の API で提供されます。

オプション 1: ネイティブの暗号化および暗号化解除

ネイティブの暗号化および暗号化解除は、OpenSSL を使用せずにデフォルトで提供されます。 これは、以下のように暗号化または暗号化解除の動作を明示的に設定することと同等です。

WLSecurityUtils enableOSNativeEncryption:YES

オプション 2: OpenSSL の有効化

OpenSSL はデフォルトで無効になっています。 有効にするには、以下を実行してください。

  1. 以下のように OpenSSL フレームワークをインストールします。
    • CocoaPods を使用する: CocoaPods を使用して IBMMobileFirstPlatformFoundationOpenSSLUtils pod をインストールします。
    • Xcode で手動で行う: 「Build Phases」タブの「Link Binary With Libraries」セクションで IBMMobileFirstPlatformFoundationOpenSSLUtils および openssl フレームワークを手動でリンクします。
  2. 以下のコードは、暗号化/暗号化解除の OpenSSL オプションを有効にします。

    WLSecurityUtils enableOSNativeEncryption:NO
    

    これで、コードは、OpenSSL 実装が検出された場合はその実装を使用し、フレームワークが正しくインストールされていない場合は、エラーをスローします。

このセットアップでは、暗号化/暗号化解除の呼び出しは、製品の以前のバージョンと同様に OpenSSL を使用します。

マイグレーション・オプション

以前のバージョンで作成された MobileFirst プロジェクトがある場合は、OpenSSL の使用を継続するために変更を取り込む必要がある場合があります。 * アプリケーションが暗号化/暗号化解除 API を使用しておらず、デバイスでキャッシュに入れられた暗号化データがない場合、アクションは不要です。 * アプリケーションが暗号化/暗号化解除の API を使用している場合、これらの暗号化/暗号化解除の API を使用する際に、OpenSSL を使用するか使用しないかを選択することができます。

ネイティブ暗号化へのマイグレーション

  1. デフォルトのネイティブの暗号化/暗号化解除オプションが選択されていることを確認します (『オプション 1』を参照)。
  2. キャッシュ・データのマイグレーション: IBM Mobile Foundation の以前のインストール済み環境が OpenSSL を使用してデバイスに暗号化データを保存している場合、『オプション 2』の説明のように OpenSSL フレームワークがインストールされている必要があります。アプリケーションが初めてデータを暗号化解除しようとしたとき、OpenSSL にフォールバックし、ネイティブ暗号化を使用してデータが暗号化されます。 OpenSSL フレームワークがインストールされていない場合、エラーがスローされます。 このように、データはネイティブ暗号化に自動的にマイグレーションされ、後続のリリースで OpenSSL フレームワークなしで動作できるようになります。

OpenSSL の継続

OpenSSL が必要な場合は、オプション 2 で述べられているセットアップを使用してください。

Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.
Last modified on February 28, 2020