コードプッシュによるコード署名
コード署名は、CodePush バンドル (JavaScript 更新) にデジタル署名を追加するセキュリティメカニズムです。この署名により、クライアントアプリは、信頼できるソースがアップデートを作成したこと、および配信中に改ざんされていないことを確認できます
コード署名は、CodePush バンドル (JavaScript 更新) にデジタル署名を追加するセキュリティメカニズムです。この署名により、クライアントアプリは、信頼できるソースがアップデートを作成したこと、および配信中に改ざんされていないことを確認できます
CodePush のコード署名は、次の 3 段階で行われます。
-
RSA キーペアの生成:
-
プライベートキーは CodePush バンドルの署名に使用されます。
-
公開鍵は、署名を検証するためにモバイルアプリに埋め込まれています。
-
-
CodePushアップデートをリリースすると、Bitrise CodePush CLIはプライベートキーを使用してバンドルに署名します。このプライベートキーでデジタル署名されたバンドルのハッシュを含む JWT (JSON Web Token) を作成します
-
モバイルアプリ (公開鍵が埋め込まれている) は、更新を適用する前に JWT 署名を検証します。検証に失敗すると、更新は拒否されます
アプリへの署名
iOS
アンドロイド
-
CodePushNext React Native SDK のバージョン 5.1.0 以降を使用してください。以前のバージョンはコード署名をサポートしていません
SDK は次の場所にあります。 CodePushNext リポジトリー。
-
コード署名機能を利用するには、Bitrise CodePush CLIのバージョンが1.0.0以上であることを確認してください。
-
オープン SSL を使用して PEM フォーマットで RSA キーペアを生成します。
openssl genrsa -out private_key.pem 2048 openssl rsa -in private_key.pem -pubout -out public_key.pem
秘密鍵は安全に保管し、決して共有しないでください。公開鍵はアプリ自体に埋め込まれます。
-
アプリの内部に公開鍵文字列を追加します。
Info.plist:<key>CodePushPublicKey</key> <string>-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArVJ2k... -----END PUBLIC KEY-----</string>
-
iOS アプリを更新して再構築する
react-native-code-pushコード署名をサポートする SDK (5.1.0 以上)。 -
Bitrise CodePush CLIを使ってアップデートをバンドルして署名しましょう。出力ディレクトリーには CodePush という名前を付ける必要があります。
bitrise :codepush bundle --platform ios --private-key-path ./private_key.pem
署名された JWT (
.codepushreleasefile) はバンドルディレクトリ内で生成され、サーバーにアップロードされます。アップロードされた.zipファイルには、次の両方が含まれます。.codepushreleaseファイルとバンドルされた出力ファイル。 -
すでにバンドルされているアップデートをプッシュしてください:
bitrise :codepush push ./CodePush \ --deployment Staging \ --app-version 1.0.0 \ --private-key-path ./private_key.pem
ヒント
オプションで、1 つのコマンドをバンドル、署名、プッシュできます。
bitrise :codepush push --bundle --platform ios \ --deployment Staging \ --app-version 1.0.0 \ --private-key-path ./private_key.pem
-
CodePushNext React Native SDK のバージョン 5.1.0 以降を使用してください。以前のバージョンはコード署名をサポートしていません
SDK は次の場所にあります。 CodePushNext リポジトリー。
-
コード署名機能を利用するには、Bitrise CodePush CLIのバージョンが1.0.0以上であることを確認してください。
-
オープン SSL を使用して PEM フォーマットで RSA キーペアを生成します。
openssl genrsa -out private_key.pem 2048 openssl rsa -in private_key.pem -pubout -out public_key.pem
秘密鍵は安全に保管し、決して共有しないでください。公開鍵はアプリ自体に埋め込まれます。
-
に公開鍵文字列を追加します
/android/app/src/main/res/values/strings.xml:<resources> <string name="CodePushPublicKey">-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArVJ2k... -----END PUBLIC KEY-----</string> </resources> -
CodePush クライアントインスタンスを設定します。
コンストラクターを使用できます。
new CodePush("deployment-key", getApplicationContext(), BuildConfig.DEBUG, R.string.CodePushPublicKey);または、ビルダーを使用することもできます。
new CodePushBuilder("deployment-key", getApplicationContext()) .setIsDebugMode(BuildConfig.DEBUG) .setPublicKeyResourceDescriptor(R.string.CodePushPublicKey) .build(); -
Android アプリをアップデートしてリビルド
react-native-code-pushコード署名をサポートする SDK (5.1.0 以上)。 -
Bitrise CodePush CLIを使ってアップデートをバンドルして署名しましょう。出力ディレクトリーには CodePush という名前を付ける必要があります。
bitrise :codepush bundle --platform android --private-key-path ./private_key.pem
署名された JWT (
.codepushreleasefile) はバンドルディレクトリ内で生成され、サーバーにアップロードされます。アップロードされた.zipファイルには、次の両方が含まれます。.codepushreleaseファイルとバンドルされた出力ファイル。 -
すでにバンドルされているアップデートをプッシュしてください:
bitrise :codepush push ./CodePush \ --deployment Staging \ --app-version 1.0.0 \ --private-key-path ./private_key.pem
ヒント
オプションで、1 つのコマンドをバンドル、署名、プッシュできます。
bitrise :codepush push --bundle --platform android \ --deployment Staging \ --app-version 1.0.0 \ --private-key-path ./private_key.pem
Expo のコード署名サポート
CodePushNextとBitrise CodePush CLIはどちらもエキスポプロジェクトのコードサイニングをサポートしています。全体的なフローは標準の React Native アプリと同じです。RSA キーペアを生成し、パブリックキーをアプリに埋め込み、リリース時に--private-key-path フラグを使用してバンドルに署名します
マネージドExpoワークフローの主な違いは、公開鍵の埋め込み方法です。これには通常、次のものが必要です。 EAS ビルド とカスタム設定プラグイン。アップデートをバンドルしてプッシュするときは、標準を使用してください bitrise :codepush 通常どおりのコマンド。
注記
ザ・ --sourcemap-output フラグは Expo プロジェクトではサポートされていないので省略してください。