SSLピンニングは、信頼されたサーバーとしか接続しないようにすることで、モバイルアプリケーションをマニン・イン・ザ・ミドル(MITM)攻撃から保護する方法です。サーバーの証明書とマッチしない接続をブロックすることで機能します。ここでは、必要なことを知っておくことができます。 SSLピンニングは、モバイルアプリケーションをマニン・イン・ザ・ミドル(MITM)攻撃から保護するために、証明書または公開鍵をアプリケーションに埋め込み、サーバーの証明書とマッチしない接続をブロックする方法です。
- なぜ重要か: 感感性データや金融取引やログイン情報をインターセプトから守る。
- 実装に必要なツール:
- 証明書ピンニング:
- Plugin for apps built with __CAPGO_KEEP_0__.: 高度のセキュリティが必要ですが、証明書の変更のために更新が必要です。
- Public Key Pinning: 少ないメンテナンスが必要ですが、キー変更のために更新が必要です。
- Hybrid Approach: 固定と動的の方法を組み合わせて柔軟性を実現します。
Quick Comparison
| Tool | Platform | 証明書管理 | バックアップピンサポート |
|---|---|---|---|
| TrustKit | iOS & Android | 自動化 | はい |
| OkHttp | Android | 手動 | はい |
| Capacitor プラグイン | Capacitor アプリ | ネイティブの構成ファイル | はい |
__CAPGO_KEEP_0__は、セキュアなアプリケーション通信のために不可欠なSSLピンニングを提供します。プラットフォームとメンテナンスのニーズに基づいて、適切なツールを選択してください。
SSLピンニングの説明
SSLピンニングツールとライブラリ
ここでは、ネイティブとCapacitorアプリ向けに最適化されたトップSSLピンニングソリューションについて紹介します。
iOSとAndroidライブラリ
TrustKit TrustKitは、iOSとAndroid両方のプラットフォームでSSLピンニングをサポートする強力なライブラリです。 [2]Android N以降のデバイス向けにネイティブ実装を提供し、Android 7未満のバージョンを対象にしたカスタムソリューションも提供します。 [2].
OkHttp一方、OkHttpはAndroidデバイス向けにSSLピンニングを実現する人気のライブラリで、Android 7未満のバージョンを対象にしたカスタムソリューションも提供します。 [4].
| 機能 | TrustKit | OkHttp |
|---|---|---|
| __CAPGO_KEEP_0__ | __CAPGO_KEEP_1__ | __CAPGO_KEEP_2__ |
| __CAPGO_KEEP_3__ | __CAPGO_KEEP_4__ | __CAPGO_KEEP_5__ |
| __CAPGO_KEEP_6__ | __CAPGO_KEEP_7__ | __CAPGO_KEEP_8__ |
| __CAPGO_KEEP_9__ | __CAPGO_KEEP_10__ | __CAPGO_KEEP_11__ |
| バックアップピンサポート | はい | はい |
Capacitor アプリも、有効なSSLピンニングを取り扱うために設計された専用のプラグインを備えています。
Capacitor プラグイン

Capacitor アプリ用では、 @aalzehla/capacitor-ssl-pinning プラグインは、ネイティブの設定ファイルを利用してAndroidの network_security_config.xml とiOSの Info.plist を利用して証明書の検証を実行することで、シームレスに統合されます。 [5].
ツール比較
適切なSSLピンニングツールを選択するには、セキュリティのニーズとメンテナンスに費やす意欲を考慮する必要があります。ここでは、2つの一般的なアプローチの詳細を紹介します。
| アスペクト | 証明書ピンニング | 公開鍵ピンニング |
|---|---|---|
| セキュリティレベル | 高 | 非常に高 |
| ストレージの影響 | 大きい | 最小 |
| メンテナンス頻度 | すべての証明書更新 | Only for key changes |
| 実装の複雑さ | 低い | 高い |
“SSL Pinning ensures that your app only communicates with your server using trusted certificates, enhancing the security against man-in-the-middle (MITM) attacks.” [7] アジャルル・ハサン、ソフトウェアエンジニア
ロックアウトを回避するには、パインニングの強制をオフにし始めて、バックアップパインを有効にし、enforcePinning="false"アプリをセキュアに保つために、定期的に証明書を確認し、更新する [6]SSL Pinning Methods [3].
SSLパインニングは、複数のアプローチを使用して実装できます。各アプローチは、セキュリティとアダプタビリティの両方で異なるレベルのセキュリティを提供します。
Fixed Certificate Pinning
固定証明書パインニング
__CAPGO_KEEP_0__
| 特性 | 影響 | 考慮事項 |
|---|---|---|
| セキュリティレベル | 非常に高 | 直接埋め込まれたピンに対する検証を確実に行う。 |
| メンテナンス | 高 | 証明書の変更に伴う __CAPGO_KEEP_0__ アプリの更新が必要になる。 |
| 実装 | 普通 | __CAPGO_KEEP_0__に依存する |
| ユーザー体験 | 変数 | 証明書の変更はアプリの機能に影響を与える可能性があります。 |
リアルタイム証明書更新
ダイナミックピニングは、証明書の更新がアプリストアへの提出を必要とせずに可能になるため、より柔軟な解決策を提供します。この方法は、以下の重要な実践に依存します。
- 証明書は、 暗号化されたチャネル.
- 各証明書は 徹底的な検証 使用前に。
- __CAPGO_KEEP_0__のバックアップ機構は、潜在的な障害に対処するために用意されています。
組み合わせたピンニング戦略
ハイブリッドアプローチは、固定ピンニングとダイナミックピンニングを組み合わせて、堅固なセキュリティと運用性の柔軟性をバランスさせます。ここではどのように機能するかを説明します。
| コンポーネント | 目的 | 更新頻度 |
|---|---|---|
| ベース証明書 | __CAPGO_KEEP_0__は、セキュリティの核となる層として機能します。 | __CAPGO_KEEP_0__はアプリのリリースとともに更新されます。 |
| ダイナミックアップデート | 変更に対する柔軟性を追加します | 必要に応じて適用します。 |
Capacitor アプリ用のプラットフォーム固有の実装
Capacitor アプリ用のSSLピンニングの実装は、プラットフォームによって異なります。
| プラットフォーム | 設定ファイル | 証明書ストレージ |
|---|---|---|
| Android | network_security_config.xml | __CAPGO_KEEP_0__ res/raw フォルダ |
| iOS | Info.plist | アプリ内に含まれています。 |
セキュリティを維持するには、定期的な更新が不可欠です。以下のセクションでは、SSLピンニング実装のテストツールと方法について説明します。
SSL ピンニング テスト
__CAPGO_KEEP_0__
SSL ピンニング設定のテストにより、アプリケーションは、信頼できるサーバーとのみ通信し、機密データをインターセプトから保護します。
テストツール
| __CAPGO_KEEP_0__ | SSL ピンニングを検証するために不可欠なツールを以下に示します。 | ツール |
|---|---|---|
| 主な機能 | 主な機能 | Charles Proxy トラフィックの検査 |
| 証明書の生成、ブレークポイント デバッグ | セキュリティテスト | 高度なインターセプト、自動スキャニング |
| mitmproxy | HTTPS分析 | カスタム証明書サポート、コマンドラインインターフェイス |
| OpenSSL | 証明書ハンドリング | 指紋生成、検証テスト |
これらのうち mitmproxy は、証明書を指定する柔軟性で特に目立っています [9].
テストガイドライン
SSLピンニングの実装を確認するには、次のテスト手順に従ってください:
| テストタイプ | 目的 | 予想される結果 |
|---|---|---|
| MITM攻撃シミュレーション | 証明書の検証を確認する | 無効な証明書で接続が失敗する |
| 証明書のローテーション | バックアップ証明書のハンドリングをテストする | バックアップ証明書へのSmoothな移行 |
| ネットワークモニタリング | 証明書の変更を追跡する | Detects and logs certificate updates successfully |
“SSL 拒否を実行するには、mitmproxy または Burp のようなツールを使用して SSL 拒否を設定し、その拡張された CA を Android 証明書ストアにインポートして信頼できるものとして設定する必要があります。拡張された CA をインポートした後、接続をキャッチして平文を取得することができます。ただし、SSL 拒否を実行した場合、エラーが発生し、SSL 検証に失敗すると、エラーが発生し、エラーが発生します。アプリケーションは、SSL 拒否を実行している可能性があります。” – Steffen Ullrich [10]
実用的な例は、強力な保護を備えたアプリケーションでも、HTTPS 通信を検査するための適切なテスト方法が存在することを示しています。 Frida セキュリティ研究者である Tim Perry 氏は、2021 年 7 月に、Android アプリの SSL 拒否をテストするためのツールである Frida を使用して、実用的な例を示しました。彼の研究結果は、強力な保護を備えたアプリケーションでも、HTTPS 通信を検査するための適切なテスト方法が存在することを示しています。
SSL 拒否の実装を強化するための追加の手段
- 実行時保護を追加して、拒否を補完する。
- ルート検出を有効にして、侵害されたデバイスを識別する。
- 変更を検証するための措置を講じる。
- SSL ハンドシェイク例外を監視する。 [8].
テストを自動化して、定期的に更新する。
In the next section, learn how solutions like Capgo can expand on these practices by integrating additional security features.
Capgo SSL ピンニング サポート

Capgoは、自動化されたセキュリティとスムーズなライブアップデートに重点を置いたSSLピンニングを強化します。SSLピンニングが厳密なテストを通じて検証された後、開発者はCapgoを利用して、更新ロールアウト中にセキュリティをスムーズ化し、速度と保護を確保できます。
Capgo機能
Capgoは、SSLピンニングを統合して、強力なセキュリティを提供しながら即時アプリケーションアップデートを可能にします。設計は、更新がパフォーマンスを損なうことなく安全に保たれるようにします:
| 機能 | 利点 | 指標 |
|---|---|---|
| 端末間暗号化 | 承認されたユーザー以外がアップデートにアクセスできないようにします | 434 ms APIレスポンス |
| グローバルCDN配布 | セキュアで高速な更新配信を提供 | 5 MBのバンドルで114 ms |
| バージョン管理 | セキュアなロールバック機能を有効 | 24 時間以内に 95% のユーザー更新 |
| リアルタイム分析 | 更新成功率を監視 | 82% の世界中での成功率 |
1,700 を超えるアプリがプラットフォームを利用しているため、Capgo は迅速な更新と SSL ピンニングの完整性を効果的にバランスしています。
セキュリティ基準
Capgo のセキュリティフレームワークは厳格なアプリストアのガイドラインを満たし、2025 年 5 月までに 1.6 兆の更新を成功させました。
ここでは、Capgo がトップレベルのセキュリティを確保する方法を紹介します。
| セキュリティ機能 | 実装 | 利点 |
|---|---|---|
| 証明書検証 | 証明書の自動検証 | マニン・ザ・ミッドル攻撃を防止 |
| アップデートチャンネルシステム | ターゲットアップデート配信 | セキュアなベータテストを可能にする |
| CI/CD統合 | デプロイ中のセキュリティチェックの自動化 | セキュリティの統一を保証します。 |
- 自動セキュリティチェック: セキュリティの統一を保証するために、更新時にもSSLピンニングが維持されることを保証します。
- 柔軟な展開オプション: さまざまなニーズに合わせたクラウドホスト型と自主ホスト型の両方のソリューションを提供します。
- リアルタイムモニタリング: 信頼性を維持するために、更新パフォーマンスとセキュリティメトリックを追跡します。
Capgoのアーキテクチャは、固定証明書ピンニングと動的証明書更新の両方をサポートしており、開発者はアプリのための最適なSSLピンニング戦略を選択できるようになります。このため、AppleとAndroidの標準に準拠しながら、堅固なセキュリティを維持できます。
概要
モバイルアプリの安全な通信を確保する上で、SSLピンニングは重要な役割を果たします。ここでは、SSLピンニングの実装に必要なキーメソッド、利点、洞察を簡単にまとめています。
主なポイント
現代のSSLピンニングツールは、さまざまなプラットフォームを対象とし、3つの主要な戦略を強調しています。
| __CAPGO_KEEP_0__ | __CAPGO_KEEP_1__ | __CAPGO_KEEP_2__ |
|---|---|---|
| __CAPGO_KEEP_3__ | 証明書の検証プロセスを簡素化します。 | 安定した証明書設定を持つアプリ |
| __CAPGO_KEEP_4__ | メンテナンスの必要性を低減します。 | 柔軟性のある証明書設定が必要なアプリ |
| __CAPGO_KEEP_5__ | セキュリティと適応性を組み合わせます。 | 複雑なエンタープライズレベルアプリケーション |
2011年デジノタル(Diginotar)事件は、Netherlandsにおけるセキュリティ上の脆弱性を明らかにし、SSLピンニングの実践を促進した。
“Androidの証明書ピンニングは、必須です。実装方法は問わず、正当なセキュリティを確保する唯一の方法です。 OWASP Mobileは、Man-in-the-Middle攻撃の最も効果的な防御策として、証明書ピンニングを推奨しています。” - OWASP Mobile [1]
AndroidとiOSの実装方法は異なり、各プラットフォームのセキュリティニーズに合わせたアプローチが必要です。 Capgoの安全な更新機能のようなツールは、強力なセキュリティ対策とSmoothなデプロイメントプロセスをバランスさせるSSLピンニングの効果的な適用を示しています。
この洞察は、セキュリティを確保しながら、ユーザー体験を円滑にするために、適切なピンニング戦略を選択する重要性を強調しています。
FAQs
::: faq
アプリのセキュリティを確保しながら、ユーザー体験を円滑にするために、証明書ピンニングとパブリックキーピンニングの違いを理解することはどのように重要か?
証明書ピンニングとパブリックキーピンニングは、SSL/TLS接続をセキュリティ化するために使用される2つの方法ですが、異なる動作を示します。
証明書ピンニング 特定サーバーセertificateにアプリを直接接続する。SSLハンドシェイクの際、アプリはそのexact certificateのみを信頼します。このアプローチは、man-in-the-middle (MITM)攻撃に対する強力な防御を提供しますが、欠点もあります: どの場合も、certificateが更新されると、アプリも更新する必要があります。
パブリックキー固定, in contrast, focuses on the public key contained within the certificate. This method is more flexible because the same public key can remain consistent across certificate renewals, minimizing the need for frequent updates. However, it doesn’t verify the entire certificate chain, which could pose a risk if a trusted certificate authority (CA) is compromised.
対照的に、パブリックキー固定は、certificate内に含まれるパブリックキーに焦点を当てています。この方法は、同じパブリックキーがcertificateの更新に伴う更新の必要性を最小限に抑えるため、より柔軟です。ただし、trusted certificate authority (CA)が侵害された場合、certificate chainの検証が行われず、リスクが生じる可能性があります。
どちらを選択するかは、アプリのニーズに依存します。certificateが頻繁に更新される場合は、パブリックキー固定が定期的な更新からアプリを守ることができます。ただし、より強固なセキュリティと制御を求めている場合は、certificate固定が選択肢となるかもしれません。 :::
::: faq
SSL固定を安全かつ機能的に維持するには、特にcertificateが更新された場合にどうしたらいいですか? certificateが更新された場合にSSL固定を安全かつ機能的に維持するには、 複数のcertificate固定
Make it a habit to update pinned certificates in your app’s code whenever your server’s SSL certificates change. Automating this step with a serverのSSL certificateが更新された場合には、常にアプリの__CAPGO_KEEP_0__にpinned certificateを更新することを習慣にしましょう。CI/CD pipelineを使用して、このステップを自動化することもできます。 セキュリティのギャップを減らし、プロセスをスムーズにすることができます。 SSL ピンニング用に特に設計されたツールやライブラリも、強いセキュリティの実践を維持しながらセットアップを簡素化できます。 Capacitor アプリの場合、Capgo などのプラットフォームは、リアルタイムの更新を可能にしながら、Apple と Android のガイドラインに準拠することで、追加の利点を提供します。
::: faq
FAQ
SSL ピンニングを実装するための最良の実践は何ですか。 モバイル アプリで SSL ピンニングを適切にテストし、 man-in-the-middle (MITM) 攻撃から保護するには、開発者は、以下の重要なステップに焦点を当てる必要があります。まず、両方の 証明書ピンニング と公開鍵ピンニング
を使用してください。このアプローチにより、アプリはのみ、信頼された証明書または公開鍵を受け入れることができ、攻撃者が敏感な情報を妨害するのを防ぎます。 テストはここで重要な役割を果たします。ツールとしては、 または OWASP ZAP MITM攻撃をシミュレートできるため、未承認の証明書を拒否するようにアプリが正しく動作することを確認できます。ピン留めした証明書を最新の状態に保つことをお忘れなく - 有効期限切れまたは古い証明書はアプリのセキュリティを弱める可能性があります。アプリのセットアップを定期的にテストおよび維持することは、セキュリティを維持するための鍵です。
For apps built with Capacitor, tools like Capgo can be a game-changer. Capgo not only supports live updates but also integrates securely with your app’s CI/CD pipeline. This makes it easier to roll out fixes or updates quickly while staying compliant with Apple and Android guidelines. :::