DNET_SmartphoneSelfSignedCert - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

スマホの自己署名証明書の許容

概要

出来ないと開発時に困るヤツ。

  • 基本的に、公開サーバとして配置するか、

    (上記の組合せだと、プライベートIPがダメ)

  • スマホ側で証明書の検証を無効化するしかない。

詳細

スマホ側で証明書の検証を無効化する方法。

iOS

未記載(元 Wiki も見出しのみ)。

Android

  • ネットワーク セキュリティ構成(Network Security Configuration)で設定可能。

  • 以下、「@」はsrc/(main or debug)/resフォルダ以下であることを表している模様。

  • AndroidManifest.xml から network_security_config.xmlを参照する。
    (この際、拡張子があっても、定義に拡張子は含めない)

    <application
      android:name=".MyApp"
      android:networkSecurityConfig="@xml/network_security_config">
  • res/xml/network_security_config.xmlファイルに以下を設定する。
    (配置するファイルに、拡張子はあっても良い)

    • main
      特定ドメインに対して証明書を許可。

      <?xml version="1.0" encoding="utf-8"?>
      <network-security-config>
        <domain-config>
          <domain includeSubdomains="true">example.com</domain>
          <trust-anchors>
            <certificates src="@raw/my_ca"/>
          </trust-anchors>
        </domain-config>
      </network-security-config>
    • debug
      debugなBuild Variantsで証明書を許可。

      • main側
        空の設定を置いておく。

        <?xml version="1.0" encoding="utf-8"?>
        <network-security-config>
        </network-security-config>
      • debug側

        <?xml version="1.0" encoding="utf-8"?>
        <network-security-config>
          <debug-overrides>
            <trust-anchors>
              <certificates src="@raw/my_ca"/>
            </trust-anchors>
          </debug-overrides>
        </network-security-config>
  • res/raw/my_ca にPEM または DER 形式の
    自己署名証明書または非パブリック CA 証明書を追加。

    • 通常時はsrc/main/res/raw/my_ca
    • debug時はdebug/res/raw/my_ca
    • 同様に、証明書に拡張子があっても定義に拡張子を含めない。
    • 実際に配置するファイルに拡張子はあっても良い。
  • 証明書以外に、system、userの文字列を設定可能。

    • system:プリインストールされたシステムの CA 証明書。
    • user:/system/etc/security/cacerts以下に追加した証明書

参考

iOS(参考)

未記載(元 Wiki も見出しのみ)。

Android(参考)

移行メモ

  • 「user:/system/etc/security/cacerts以下に追加した証明書」は原文ママ。 Android の user CA ストアは実際には /data/misc/user/0/cacerts-added であり、 /system/etc/security/cacerts はシステム CA 側のパスである。
  • 同名の見出し(「iOS」「Android」)が詳細と参考の両方にあり GitHub Wiki でアンカが衝突するため、参考側は括弧で文脈を補って一意にした。
  • 本文の無い見出し(iOS の 2 箇所)は、その旨を明示した。
  • 元 Wiki の行頭空白によるプレフォーマット・ブロックは、 フェンス付きコードブロックにした。
  • リンク先が未移行のページは、移行先のファイル名を `DNET_○○.md` の形で示し TODO.md に登録した。

Tags: 移行, Android, iOS, 自己署名証明書, Network Security Configuration, CA証明書, HTTPS, デバッグ

⚠️ **GitHub.com Fallback** ⚠️