メインコンテンツにジャンプ

Capacitor アプリのSSLピンニング

Capacitor アプリにSSLピンニングを実装して、セキュリティを強化しMITM攻撃から保護することができます。また、App Storeのガイドラインに準拠しています。

Capacitor アプリ用の SSL ピンニング

SSL ピンニングは、サーバーサーバーセルティファを直接アプリ内で検証することで、セキュリティ脅威からアプリを保護します。 それがなければ、攻撃者は機密情報を取得したり、通信を操作したりすることができます。ここでは、どのように実装するかについて説明します。

SSL ピンニングの重要性

  • MITM 攻撃を防止する API の呼び出しをブロックする
  • セキュリティを強化する サーバーサーバーセルティファを知られている値と検証する
  • アプリストアの要件を満たす Apple と Google のセキュリティ基準を満たす
  • ユーザーの信頼を築く ユーザーデータを安全に送信する

SSLピンニングの実装手順:

  1. 適切なプラグインの選択: iOSおよびAndroidの互換性を確保:
  2. アプリの設定: アプリの設定に証明書データを埋め込む:
  3. プラットフォーム固有の設定:
    • Android: Use network_security_config.xml iOS:
    • iOS: Adjust Info.plist __CAPGO_KEEP_1__
  4. セットアップをテスト: ツールとしての チャールズ・プロキシ を使用してセキュリティを確認する。
  5. 証明書の管理: 定期的に証明書を更新し、ダウンタイムを回避するためにバックアップを含める。

AndroidとiOSのSSLピンニングの比較:

機能 Android iOS
設定ファイル network_security_config.xml Info.plist
証明書の場所 res/raw ディレクトリ アプリケーションバンドル
検証方法 XMLベースの構成 ATSと実行時検証
更新プロセス 手動または自動 手動または自動

プロのヒント: ツールを使用して証明書の更新を自動化する Capgo 証明書の自動更新ツールを使用して

SSLピンニングは、任意の Capacitor アプリをセキュアな API 通信とユーザーデータ保護に利用する。今日からセキュリティを強化するために実装を始めましょう。

__CAPGO_KEEP_0__

TLS/SSL証明書ピンニングの解説

YouTube動画プレイヤー Capacitor app SSLピンニングを実装するには

__CAPGO_KEEP_0__

iOS と Android の両方で機能し、強力なセキュリティ機能を提供するプラグインを選択することが第一のステップです。 Capacitor アプリの場合、 @capgo/capacitor-SSLピン留め CapacitorHttpのiOSとAndroid用のHTTPS接続を、バンドルされた証明書で固定します。プラグインを比較する際に、次の要素を考慮してください:

  • プラットフォーム互換性: iOSおよびAndroidデバイス両方でプラグインが正常に機能することを確認します。
  • 証明書管理: 証明書の取り扱いを簡素化するプラグインを選択します。
  • 簡単な更新: 証明書の更新がアプリの完全な再構築を必要としないプラグインを探します。
  • パフォーマンスの考慮: プラグインがアプリの速度と反応性にどのような影響を与えるかを評価します。

__CAPGO_KEEP_0__の設定 Capacitor アプリ

Capacitor フレームワークドキュメントサイト

プラグインを選択した後、次のステップはCapacitorアプリをSSLピンニングを有効にするために設定することです。ここでは、設定例を示します。

// Example: capacitor.config.ts
{
  appId: 'com.example.app',
  plugins: {
    SSLPinning: {
      certs: ['cert1', 'cert2'],
      validateCertificates: true,
      allowBackup: false
    }
  }
}

ユーザーにSmoothな移行を保証するために、徐々にこれらの変更を実施することをお勧めします。一般的な設定を設定した後、AndroidとiOSのプラットフォーム固有の調整に進み、実装を完了します。

プラットフォーム固有の設定

SSLピンニングを有効にするには、AndroidとiOSのプラットフォーム固有の設定が必要です。

Androidの実装

Androidでは、SSLピンニングはネットワークセキュリティの設定と証明書の管理が必要です。以下の手順に従ってください。

  • ネットワークセキュリティの設定を作成

    Androidプロジェクトの network_security_config.xml in the res/xml AndroidManifest.xmlファイルを更新

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config>
            <domain includeSubdomains="true">api.example.com</domain>
            <pin-set>
                <pin digest="SHA-256">your_certificate_hash</pin>
                <!-- Backup pin -->
                <pin digest="SHA-256">backup_certificate_hash</pin>
            </pin-set>
        </domain-config>
    </network-security-config>
  • __CAPGO_KEEP_0__ Framework Documentation Website

    SSLピンニングをCapacitorアプリに適用する AndroidManifest.xml ファイル:

    <application
        android:networkSecurityConfig="@xml/network_security_config"
        ...>
  • 証明書ファイルを追加

    必要な証明書ファイルを保存する(.cer または .pem)で res/raw Capacitorアプリのネットワークセキュリティ設定を新しく作成した設定に参照する

Androidプロジェクトのディレクトリ内に

iOS実装

  • iOSでは、ATS設定を変更して実行時証明書検証を実装することでSSLピンニングを設定します。以下の手順に従ってください:

    Info.plistにATSを設定する Info.plist ファイル:

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <false/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>api.example.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSPinnedDomains</key>
                <true/>
            </dict>
        </dict>
    </dict>
  • SSLピンニングの初期化をCodeで実行します。

    codeの以下のスニペットを使用して、初期化時アプリでSSLピンニングを有効にします。

    import { HTTP } from '@ionic-native/http/ngx';
    
    export class AppComponent {
      constructor(private http: HTTP) {
        this.initializeSSLPinning();
      }
    
      async initializeSSLPinning() {
        try {
          await this.http.setSSLCertMode('pinned');
          console.log('SSL Pinning initialized successfully');
        } catch (error) {
          console.error('SSL Pinning initialization failed:', error);
        }
      }
    }

AndroidとiOSの実装の比較

AndroidとiOSのSSLピンニングの違いを簡単に比較します。

機能 Android iOS
設定ファイル network_security_config.xml Info.plist
証明書の場所 res/raw ディレクトリ アプリケーションパッケージ
検証方法 XML構成 ATSと実行時検証
プラグインサポート ネイティブ+カスタムプラグイン ネイティブ+カスタムプラグイン

次に、テスト戦略と一般的なミスについて詳しく説明します。これにより、SSLピンニング設定が信頼性とセキュリティを確保することができます。

テストと修正

SSLピンニング設定をテストすることは、Man-In-The-Middle (MITM) 攻撃を防ぐために不可欠です。ここでは、実装がセキュアかつ一般的な問題をトラブルシューティングする方法を説明します。

MITM攻撃テスト

MITM攻撃をシミュレートしてSSLピンニング設定を検証するには、プロキシツールのCharles Proxyを使用できます。

チャールズプロキシテスト

以下の手順に従って、チャールズプロキシでテストしてください。

  1. __CAPGO_KEEP_0__をデバイスにインストールしてください。
  2. チャールズの設定でSSLプロキシを有効にします。
  3. APIドメインをSSLプロキシのリストに追加してください。
  4. デバイスをチャールズプロキシを経由して通信するように設定してください。

SSLピンニングが正しく実装されている場合、テスト中にアプリケーションログに証明書検証エラーが表示されます。

ネットワーク設定テスト

次のcodeスニペットを使用して、ピンされた証明書で接続を検証してください。

// Validate pinned certificate connection
try {
    const response = await Http.get({
        url: 'https://api.example.com/test',
        headers: { 'Content-Type': 'application/json' }
    });
    console.log('Connection successful');
} catch (error) {
    console.error('Certificate validation failed:', error);
}

一般的なエラーの解決策

ここでは、一般的なSSLピンニングの問題とその解決策を紹介します。

エラーの種類 一般的な原因 解決策
証明書の不一致 設定ファイル内のハッシュが不正 証明書ハッシュを確認するには OpenSSL.
パスに関する問題 証明書の場所が不正 プラットフォーム固有の証明書パスを確認してください。
フォーマットに関する問題 証明書のフォーマットが不正 証明書を正しいフォーマット(例:PEMまたはDER)に変換してください。
ネットワークタイムアウト ピン設定が不正 ネットワークセキュリティ設定を確認してください。

証明書ハッシュの検証

証明書ハッシュが設定に一致することを確認するには、次のOpenSSLコマンドを使用してください。

# Generate the correct certificate hash
openssl x509 -in certificate.pem -pubkey -noout | \
openssl rsa -pubin -outform der | \
openssl dgst -sha256 -binary | base64

エラーを解決した後、証明書の更新プロセスが正しく機能していることを確認してください。

証明書更新テスト

両方の主な証明書とバックアップ証明書を含めて、更新中にサービスダウンタイムを防ぐための設定を組み込んでください。

証明書更新プロセスのテスト

証明書のローテーションをテストする方法の例です。

// Rotate certificates
const certificates = {
    current: 'sha256/current_certificate_hash',
    backup: 'sha256/backup_certificate_hash'
};

// Test both certificates
async function validateCertificates() {
    try {
        await testConnection(certificates.current);
        console.log('Primary certificate valid');
    } catch {
        try {
            await testConnection(certificates.backup);
            console.log('Backup certificate valid');
        } catch {
            console.error('All certificates invalid');
        }
    }
}

証明書の有効期限を定期的に確認して、混乱を避けるようにしてください。

最後に、安定したWi-Fi、モバイルデータ、オフラインシナリオ、ネットワークの移行などのさまざまな条件下で、テストして、堅固なセキュリティと機能性を確保してください。

# Check certificate expiration date
openssl x509 -enddate -noout -in certificate.pem

SSLピン管理

証明書の更新テスト

SSLピンニングの設定が完了したら、次のステップは、長期的な強固なセキュリティを維持するために、証明書とキー ピンニングの管理です。

証明書ピンニングとキー ピンニング

SSLピンニングの場合、2つの主なアプローチがあります: 証明書ピンニングと公開鍵ピンニング。各アプローチには、特に Capacitor アプリケーション:

機能 証明書ピンニング 公開鍵ピンニング
セキュリティレベル 高 – 証明書全体をピン 非常に高 – 公開鍵のみをピン
メンテナンス 更新が必要なのは各更新の場合のみ 頻度の低い、更新時に生き残る
実装 実装が簡単 初期設定が複雑
ストレージの影響 ストレージの大きいフットプリント ストレージの要件が少ない
更新の頻度 証明書の更新時に毎回 パブリックキーが変更されたときにのみ

この分解能は、長期的なメンテナンス戦略とどの方法が最も適しているかを判断するのに役立ちます。

証明書の自動更新

Keeping certificates updated is critical for securing API communications. Capgo offers a streamlined solution by automating these updates, eliminating the need for app store resubmissions. Here’s what it provides:

  • 高速な採用率: 24時間以内に95%の採用率を達成するために、更新は段階的に追跡されます。 [1].
  • 暗号化された配信: 更新は完全に暗号化されたエンドツーエンドで行われます。
  • リアルタイムモニタリング: アナリティクスは更新の成功率を提供します。

実装方法

  • 自動化された更新の設定
    Integrate Capgo’s CI/CD pipeline to handle certificate updates automatically. Capgo plans start at $12/month and include OTA updates plus about 15 native builds/month. Extra build minutes are billed by minute through credits.

  • 証明書のメトリクスを追跡
    Use Capgo’s analytics dashboard to monitor key metrics, such as the global update success rate, which currently stands at 82% [1].

これらの対策は、潜在的なMITM攻撃からアプリを保護するのに役立ちます。

App Store セキュリティ ガイドライン

Apple App Store と Google Play Store は両方とも SSL ピンニングの厳格なセキュリティ要件を強制しています。ここでは、両方の期待について簡単に説明します。

Apple App Store:

  • 証明書はエンドツーワークの暗号化を使用して更新する必要があります。
  • 証明書の適切な検証は必須です。
  • セキュリティ ドキュメントはレビュー プロセス中に必要です。

Google Play Store:

  • 更新は承認されたメカニズムを使用する必要があります。
  • 証明書の管理における透明性は不可欠です。
  • フォールバック メカニズムが用意されている必要があります。

Capgoの解決策は、これらの要件をすべて満たしながら即時更新を可能にします。 [1]. Capgoで、伝統的なアプリストアの更新とライブ更新を組み合わせることで、堅固なセキュリティアプローチを実現できます。このハイブリッド戦略により、不必要な遅延なしにアプリがセキュアでコンプライアントになることを保証します。

まとめ

CapacitorアプリをMITM攻撃から守るために、SSLピンニングの実装は必須です。アプリ内に信頼できる証明書データを埋め込むことで、API通信のセキュリティを大幅に強化できます。

成功的な実装のために、次の重要な点を考慮してください:

  • 証明書管理: サービス中断を防ぐために、定期的に更新して証明書を監視することを優先してください。
  • 開発ワークフロー: テスト環境ではバイパスメカニズムを組み込むことを含め、厳密なセキュリティプロトコルを実装することを保証してください。
  • プラットフォームガイドライン: Apple App StoreとGoogle Play Storeのセキュリティ要件に準拠することを保証してください。

SSLピンニングはユーザーデータの保護とアプリの完整性を維持する上で重要な役割を果たします。より広範なセキュリティ対策と組み合わせると、よりセキュアなアプリ環境を作成するのに役立ちます。

FAQ

::: faq

CapacitorアプリでSSLピンニングが使用されない場合に起こり得るリスクは何ですか?

CapacitorアプリでSSLピンニングが設定されていない場合、攻撃者はアプリとサーバー間のデータをインターセプトし、改ざんすることができます。これにより、ユーザーキャレントやCapacitorキーなどの敏感情報が漏洩する可能性があります。 これは、Man-in-the-Middle (MITM) 攻撃の例です。これにより、攻撃者は、ユーザーキャレントや__CAPGO_KEEP_0__キーなどの敏感情報を漏洩させることができます。 APIキー.

__CAPGO_KEEP_0__アプリでAndroidとiOSのSSLピンニングの実装と維持の主な違いは何ですか?

::: faq

Android と iOS の Capacitor アプリで SSL ピンニングを実装および維持する際の主な違いは何ですか。

Android

On Android,開発者はよくネットワークライブラリのOkHttpなどを利用したり、native設定でSSLピンニングを設定したりします。ただし、ピンナードの証明書を更新する時は、通常、最新バージョンのアプリをリリースする必要があります。

On iOS,SSLピンニングはURLSessionまたは第三パーティライブラリを利用して実行されます。Androidと同様に、証明書の更新には注意が必要です。APIの通信が途切れなくするために。

両方のプラットフォームでは、証明書の有効期限と更新を管理することが、APIの接続を安全に保つために重要です。定期的なテストは、互換性の問題を早期に発見し、対象となる 中間者攻撃 を防ぐために不可欠です。

:::

How can I automate SSL certificate updates and ensure my Capacitor app complies with app store security requirements?

SSL証明書の自動更新を自動化し、__CAPGO_KEEP_0__アプリがアプリストアのセキュリティ要件に準拠する方法はありますか? SSL ピンニング あなたのCapacitorアプリ内で。 これは、アプリを保護するために役立ちます。 man-in-the-middle (MITM)攻撃, 重要なデータを侵害する可能性がある。

CapacitorアプリのためのLive Updateとアプリのメンテナンスの簡素化を管理するためのプラットフォームとして Capgo CapacitorアプリのためのSSLピンニング

Keep going from SSL Pinning for Capacitor Apps

CapacitorアプリのためのSSLピンニング SSL ピンニング for Capacitor アプリ SSLピンニング SSLピンニング コンプライアンス Compliance Complianceの実装詳細のために Capgo セキュリティ スキャナー Capgo セキュリティ スキャナーの製品ワークフロー Capgo セキュリティ Capgo セキュリティの製品ワークフロー、および Capgo トラスト センター Capgo トラスト センターの製品ワークフロー

Capacitor アプリのライブアップデート

ウェブ層のバグが生じた場合、Capgo を通じて修正を配信するのではなく、数日間待ってアプリストアの承認を待つのではなく、ユーザーはバックグラウンドで更新を受け取り、ネイティブの変更は通常のレビュー経路を通じて

マーティンによる人間のサポート

始めましょう

最新のブログ記事

Capgo は、プロフェッショナルなモバイルアプリを作成するために必要な最良の洞察を提供します。