Home > android > Androidアプリに証明書を入れてちゃんとデジタル署名する方法

Androidアプリに証明書を入れてちゃんとデジタル署名する方法

AndroidアプリをAndroid Marketで公開するにはちゃんと署名する必要があります。
本エントリでは証明書を作成し、それを使って自作のAndroidアプリをデジタル署名する方法をご紹介します。

前提条件

Javaをインストールしたディレクトリを下記とします。

JAVA_HOME=/opt/java

Javaのバイナリを下記とします。

JAVA_BIN=/opt/java/bin

JavaのバイナリへPATHが通っているとします。

export PATH = ${PATH}:${JAVA_BIN}

すなわち、下記のコマンドが使えることを前提としています。

$ which keytool
/opt/java/bin/keytool
$ which jarsigner
/opt/java/bin/jarsigner
全体の流れ

Androidアプリに証明書を入れてデジタル署名するには2ステップで簡単にできます。

  1. 証明書を作成する
  2. Androidアプリ(apk)を署名する

では、早速それぞれを詳しく説明します。

証明書を作成する

まずは非公開鍵や証明連鎖(これをキーストアという)を作成します。
Androidアプリを署名するのに、どこかの認証を得る必要はありません。
自分で作った証明書さえあれば良いようです。
キーストアの作り方は下記の通りです。

$ keytool -genkey -keystore ${HOME}/.android/adamrocker.keystore -validity 10000 -alias adamrocker
キーストアのパスワードを入力してください: pass_phrase
姓名を入力してください。
[Unknown]: adamrocker
組織単位名を入力してください。
[Unknown]: jag
組織名を入力してください。
[Unknown]: jag
都市名または地域名を入力してください。
[Unknown]: yokohama
州名または地方名を入力してください。
[Unknown]: kanagawa
この単位に該当する 2 文字の国番号を入力してください。
[Unknown]: jp
CN=adamrocker, OU=jag, O=jag, L=yokohama, ST=kanagawa, C=jp でよろしいですか?
[no]: yes

これで、非公開鍵や証明連鎖を含んだキーストアが${HOME}/.android/にadamrocker.keystoreに作成されます。
デジタル署名の基本は共通鍵暗号ですので、このキーストアを使ってAndroidアプリを署名します。
コマンドを実行すると、対話形式で項目が出てきます。それぞれ、自分に適した値を入力して下さい。

keytoolのオプションの説明

今回使ったkeytoolのオプションを簡単に説明します。

  • -genkey: 非公開鍵&証明連鎖(キーストア)の作成
  • -keystore [file]: [file]にキーストアを保存する
  • -validity [days]: 鍵の有効期限を[days]とする
  • -alias [text]: 証明書の別名を[text]に設定する

なお、Androidのドキュメントによるとvalidityで指定する値は25年以上でないといけないようです。
推奨は10000だそうです。

おまけ

Android Mapsを使ったアプリの場合、ここで作ったキーストアを使ってAndroid Maps API Keyを取得します。
API Keyの取得方法については、「AndroidでGoogle Mapsを使う最も簡単なサンプル」をご参照下さい。

Androidアプリ(apk)を署名する

先ほど作ったキーストアで、自作のAndroidアプリ(apk)を署名します。
証明したいアプリ(apk)を下記とします。

/tmp/Hello.apk

早速、このアプリを署名します。

$ jarsigner -keystore ~/.android/adamrocker.keystore -verbose /tmp/Hello.apk adamrocker
キーストアのパスワードを入力してください: pass_phrase
追加中: META-INF/MANIFEST.MF
追加中: META-INF/ADAMROCK.SF
追加中: META-INF/ADAMROCK.DSA
署名中: res/drawable/icon.png
署名中: res/layout/main.xml
署名中: AndroidManifest.xml
署名中: resources.arsc
署名中: classes.dex

これでデジタル署名完了です。

-keystoreで先ほど作成し保存したキーストアのパスを指定します。
-verboseは詳細を表示するオプションで、必須ではありません。
その後に、署名対象となるアプリを指定します。
最後の「adamrocker」は、キーストアを作成する時に設定した別名(alias)です。
このコマンドを実行すると、対話形式でキーストアのパスワードを聞かれますので、
キーストア作成時に入力したパスワードを入れて下さい。
これだけで署名が完了しました。

あとはAndroid Marketで公開するだけですね。

このエントリをはてなブックマークに登録 Deliciousにブックマーク
関連のありそうなエントリ

Comments:0

Comment Form
Remember personal info

*
To prove that you're not a bot, enter this code
Anti-Spam Image

Trackbacks:4

Trackback URL for this entry
http://www.adamrocker.com/blog/232/signing_for_publish_android_application.html/trackback/
Listed below are links to weblogs that reference
Androidアプリに証明書を入れてちゃんとデジタル署名する方法 from throw Life
pingback from Androidの.odexを.dexに変換する方法 « 突然消失するかもしれないブログ 09-09-19 (土) 16:17

[…] throw Life – Androidアプリに証明書を入れてちゃんとデジタル署名する方法 […]

pingback from Twitter Trackbacks for throw Life - Androidアプリに証明書を入れてちゃんとデジタル署名する方法 [adamrocker.com] on Topsy.com 09-10-31 (土) 22:16

[…] throw Life - Androidアプリに証明書を入れてちゃんとデジタル署名する方法 www.adamrocker.com/blog/232/signing_for_publish_android_application.html – view page – cached Walkin’ On The Spiral. Let’s see, if that’s true or not. — From the page […]

pingback from Coronaの環境構築編 « TheDesignium 10-05-26 (水) 15:54

[…]   Androidアプリに証明書を入れてちゃんとデジタル署名する方法   http://www.adamrocker.com/blog/232/signing_for_publish_android_application.html […]

pingback from 初めてのアンドロイドアプリ&LT発表 | Stay hungry, stay foolish 11-02-06 (日) 19:07

[…] その後、アプリ公開までの流れは以下のサイトを参考にしました。 Androidアプリケーション配布前にやること Androidアプリに証明書を入れてちゃんとデジタル署名する方法 keytoolコマンドで公開するandroidアプリに署名するための証明書(鍵)を生成する […]

Home > android > Androidアプリに証明書を入れてちゃんとデジタル署名する方法

Twitter
Search
Feeds
Meta

Return to page top