Androidアプリの署名に使う鍵ファイルをコマンドライン(CLI)で生成する

Gistの方で以前書いたメモですが、わりと何度も見直す機会があったので、あらためて少し解説を挟みながら記事を書くことにしました。

Androidとかで使う証明書鍵をコマンドラインで生成する

基本

Androidアプリの署名に使う鍵ファイルを生成したい場合、 keytool を使います。

$ keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias

鍵アルゴリズムはRSA、キーサイズは2048を指定する必要があるみたいです。 また、エイリアスや有効日数の設定は後述する質問で聞かれないため、それらもここで設定する必要があります。

上記のコマンドの場合、キーストアのパスワード含め署名者情報の質問があるため、必要な情報を入力することで鍵が生成されます。

$ keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias
キーストアのパスワードを入力してください:  
新規パスワードを再入力してください: 
姓名は何ですか。
  [Unknown]:  
組織単位名は何ですか。
  [Unknown]:  
組織名は何ですか。
  [Unknown]:  
都市名または地域名は何ですか。
  [Unknown]:  
都道府県名または州名は何ですか。
  [Unknown]:  
この単位に該当する2文字の国コードは何ですか。
  [Unknown]:  
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknownでよろしいですか。
  [いいえ]:  y

10,000日間有効な2,048ビットのRSAのキー・ペアと自己署名型証明書(SHA256withRSA)を生成しています
        ディレクトリ名: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
[my-release-key.jksを格納中]

ちなみに、Androidアプリのgradleファイルで言うkeyPasswordstorePasswordは同じものになります。 「キーストアのパスワード」と聞いているので、そういうことなんでしょうね。

また署名情報は何も入力しないとUnknownとして設定されます。 開発用の鍵ファイルなら問題ないでしょうが、本番用の鍵ファイルには信頼性を高めるためにもちゃんと入力しておきましょう。

すべてをオプションですませたいあなたへ

上記のコマンドから応答形式で記述したパスワードや署名情報ですが、これらもkeytoolのオプションで設定できます。 パスワードの方も-storepass-keypassでそれぞれ別のパスワードを指定できます。

署名情報は-dnameオプションを使って、まとめて設定します。

署名情報はとにかく、パスワードに関しては端末の入力履歴に残ってしまうので、よく考えて使用を判断してください。

debug.keystoreをCLIでまとめて作る

開発用でお馴染みのdebug.keystoreは、パスワードがandroidでエイリアスがandroiddebugkey、署名情報は全部Unknownでされていることが多いです。 これをCLIで生成すると、次の記述になります。

$ keytool -genkey -v -keystore app/debug.keystore \
    -keyalg RSA -keysize 2048 \
    -alias androiddebugkey -keypass android -storepass android \
    -validity 36500
    -dname "cn=Unknown, ou=Unknown, l=Unknown, st=Unknown, c=Unknown"

# one liner
$ keytool -genkey -v -keystore app/debug.keystore -keyalg RSA -keysize 2048  -alias androiddebugkey -keypass android -storepass android -validity 36500 -dname "cn=Unknown, ou=Unknown, l=Unknown, st=Unknown, c=Unknown"

以上です。

yamacraftを支援する

記事への感謝や応援を、コーヒー1杯分の支援で行うことができます。支援を受けると、さらに頑張って記事を書くようになります。