Androidアプリ用keystoreファイルをAdobe AIR アプリで利用する方法の調査 [未解決]
AndroidのアプリをGoogle Play Storeへ登録する際に利用するkeystoreファイル。
その keystore ファイルを利用して、Flash Professional で Android 用の Adobe AIR アプリを制作する必要が発生しました。
いつもなら、Flash Professional だけで作成する、Adobe AIR のアプリなので、Flash で p12ファイルを作って、それをそのまま利用するので、データの整合性を考えずに済むのですが、今回は受け仕事で先方から kesystore ファイルが到着している以上、対応する必要があるので、かなりの大変な状態になってしまっております。
keystoreファイルは、ネイティブのAndroidアプリ開発であれば、そのまま組込めば良いそうですが、Adobe AIRアプリの場合、それをそのまま利用することはできませんので、Flashへ組み込んで利用できる p12ファイルへ変換する必要があります。
その変換方法について、調査してみました。
なお、現時点で p12ファイルの生成まではできているのですが、Flash での利用で失敗しております。
まだ何か足らない可能性があるので、さらに調査を進めている途中段階での記事です。
ターミナルの文字エンコーディングを変更
ファイルを生成するにはターミナルから、keytool を利用して変換することになります。
keytoolを利用すると、途中で日本語でパスワード関連の質問が表示されます。
ターミナルで利用する文字エンコーディングを「Unicode(UTF-8)」にしていると、この日本語が文字化けするので、あらかじめエンコーディングを「日本語(Mac OS)」に設定しておく必要があります。
ターミナルを起動している状態で、
処理が終了した後、再度「Unicode(UTF-8)」へ戻すことをお忘れなく。
Androidキーストアファイル(JKS)からp12(PKCS12)ファイルへの変換
Androidのキーストアファイルは、JKS(Java Key Store)形式のファイルです。
それを、p12ファイル(PKCS12形式)のファイルへコンバートします。
ターミナルで入力するコマンドは以下の形です。
sudo keytool -importkeystore -srckeystore [keystoreファイル名] -srcstoretype JKS -srcalias [取り出すalias名] -destkeystore [p12ファイル名] -deststoretype PKCS12
ファイル名はパスを合わせておく必要がありますので、最初にkeystoreファイルがあるフォルダへ移動してから、コマンドを入力した方が良いかもしれません。
フォルダへの移動は、
cd [フォルダ名]
通常であれば、「cd 」と入力したあと、finderから移動したいフォルダをターミナルへドラッグドロップすれば、そのフォルダ名が表示されますが、ターミナルのエンコードを「日本語(Mac OS)」にしているとこれが利用できません。
先に、フォルダへ移動してから、ターミナルのエンコードを変更した方が良いかもしれません。
実際のコマンドとしては、例えば以下のような条件の場合、
元のkeystoreファイル名 : hoge.keystore
ailias名 : fuga
生成するp12ファイル名 : hoge.p12
ターミナルで以下のコマンドを入力します。
sudo keytool -importkeystore -srckeystore hoge.keystore -srcstoretype JKS -srcalias fuga -destkeystore hoge.p12 -deststoretype PKCS12
sudo は管理者権限で実行するためのコマンドです。
Password:
で止まっていた場合は、管理者のパスワードを入力する必要があります。
その後、
出力先キーストアのパスワードを入力してください:
新規パスワードを再入力してください:
ソースキーストアのパスワードを入力してください:
の鍵パスワードを入力してください。
と、順番にパスワードを入力する画面で止まるので、1つずつ順番にパスワードを入力していくことで、p12 ファイルが生成されます。
「出力先キーストアのパスワード」「新規パスワード」は、今回生成する p12 ファイルを利用するのに使うパスワードです。
「ソースキーストアのパスワード」は、keystoreファイルのパスワードです。
「
上記が正常に終了すれば、p12ファイルが同一フォルダ内に生成されます。
keytool エラー: java.security.UnrecoverableKeyException: Cannot recover key
と表示される場合は、パスワードの入力関係で間違っている可能性があります。
P12ファイルを Flash Professional CS6 へ組み込む
現在、この部分がうまく行っておりません。
本来であれば、Flash Professional の「AIR for Android 設定」の「デプロイ」タブの「証明書」に、上記で作成した p12ファイルを指定し、「パスワード」の部分に、設定したパスワードを入力すれば、利用できるはずです。
しかし、現在利用している keystore ファイルから生成した p12 ファイルを上記欄に指定すると、書き出し時にエラーが出て停止してしまっております。
元の keystore ファイル自体に問題があるのか、生成した p12ファイルに問題があるのか、何かやり残しているものがあるのか・・・
原因については、現時点で不明なため、引き続き調査を行い、原因が判明次第、後日このブログで報告したいと思っております。