1. HOME
  2. ブログ
  3. IT技術
  4. Androidのリリース用keystoreファイルのパスワードをセキュアに保つ

Androidのリリース用keystoreファイルのパスワードをセキュアに保つ

keystoreファイル(.jksファイル)の重要性

今回は、Androidアプリ開発に向けての記事として、リリース用のapk(最近ではabb Androidアプリバンドル)ファイルの生成に必要な『keystoreファイル(.jksファイル)の重要性』と、『keystoreファイル生成時のパスワードをいかにセキュアに保つか』について書いてみたいと思います。

keystoreファイルは絶対に失くさないように厳重に管理しよう

まず、keystoreファイルとは、Androidアプリの最初のリリース時に生成するものです。

そして、Googleに対して「このアプリは私が責任をもって作りました」と証明するために必要なものとなります。

keystoreは、Android Studioで Build > Generate Signed APK...で作成できます

そのため、このkeystoreファイルを誤って削除したり、紛失したりするとそのAndroidアプリの更新リリースができなくなります。

筆者も、過去にkeystoreファイルを紛失したために、改めて別アプリとしてプライベートで開発しているアプリを再度version 1.0.0からリリースしなければならない」という悲劇を経験しました。

「keystoreファイル自身はgit管理する方法」「keystoreファイル自体を人づてにローカルで渡していく方法」など、人によりいくつか管理する方法がありますが、個人的には、keystoreファイル自体をgitで管理するのはセキュリティ上のリスクが伴うと考えます。

storePasswordとkeyPassword

keystoreファイルが流出してしまうと、applicationIdなどGoogle Playに公開されている情報から、成りすましのアプリも公開できてしまいます。

それを防ぐ最後の砦として、Androidアプリの本番リリース用パッケージをビルドする際に「storePassword」「keyPassword」が必要となります。

storePassword、keyPasswordは共に厳重に管理される必要があります。

JenkinsなどのCI環境でアプリのビルドを行う際に、このパスワードの管理方法がよく議論されています。

それでは、いくつかのPassword管理方法をご紹介していきたいと思います!

こちらの記事もオススメ!

【方法1】Password管理方法の基本形

まずは、基本となる形からいってみましょう。

app/build.gradle

しかし、これではgradleファイルに平文で書かれているため、セキュリティ上のリスクが大きいです。

個人で開発している分には大丈夫ですが、チーム開発となると退職者などによる流出騒ぎのリスクに発展しかねません。

【方法2】gradle.propertiesから読み込む

gradle.properties

gradle.propertiesは、app/build.gradleから参照できる環境変数を格納できます。

CI環境でのビルドでは、これを利用してビルドしたりします。

app/build.gradleは、下記のようになります。

なお、この場合gradle.properties.gitigoreに加えておく必要があります。

うっかりgitの管理下に置いてしまうと大変です。

【方法3】ビルドする端末の環境変数を利用する

個人的には、これが一番セキュアで漏洩の心配がないのでは?と考えている方法です。

~/.bash_profile

app/build.gradleは、下記のようにします

ポイントは、この部分です。

これにより、ビルドする端末の環境変数を利用してビルドしてくれます。

.bash_profile などであれば、Androidアプリのプロジェクトスコープ外にあるため、git管理上に上がる心配がありません

また上述の .bash_profile をCI用ユーザーjenkinsなどに設定しておけば、ビルドをCI環境のみで行える環境作りが可能になります。

まとめ

  1. リリース用keystoreファイル(.jksファイル)は絶対に紛失、流出させてはならない
  2. keystoreファイルの管理は状況に応じて変える必要がある
  3. keyPassword,storePasswordは最後の砦なので、本番環境用ビルドする際は取扱を気をつける

(株)ライトコードは、WEB・アプリ・ゲーム開発に強い、「好きを仕事にするエンジニア集団」です。
Androidアプリ開発のご依頼・お見積もりはこちらまでお願いします。
また、Androidアプリ系エンジニアを積極採用中です!詳しくはこちらをご覧ください。

※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

こちらの記事もオススメ!

書いた人はこんな人

ライトコード社員ブログ
ライトコード社員ブログ
「好きなことを仕事にするエンジニア集団」の(株)ライトコードです!
ライトコードは、福岡本社、東京オフィスの2拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もりは大歓迎!
また、WEBエンジニアとモバイルエンジニアも積極採用中です!

ご応募をお待ちしております!

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア