ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

JavaのネットワークアクセスデバッグにCharlesを使う

f:id:mbaasdevrel:20190318160130j:plain

mBaaSで最も厄介なのは署名の生成処理で、それが正しく作られているかどうか、ちゃんとしたレスポンスが返ってきているのかどうかはネットワークアクセスをデバッグしないと分かりません。しかしmBaaSはHTTPSアクセスなので、プロキシを通すとエラーになってしまいます。

そこでCharlesを使って証明書エラーを回避する方法がありましたので紹介します。なお試したのはmacOSです。Windowsでもできるとは思いますが、コマンドが異なるはずなのでご注意ください。

通常のアクセス

プロキシを使ってHTTPSアクセスを行うと以下のエラーメッセージが返ってきます。

You may need to configure your browser or application to trust the Charles Root Certificate. See SSL Proxying in the Help menu.

証明書をダウンロードする

CharlesのHelpメニューの中にある SSL Proxying > Save Charles Root Certificate を選択します。このファイルはデスクトップにダウンロードされます。

f:id:mbaasdevrel:20190318160537p:plain

証明書をインストールする

そこで以下のコマンドを実行します。これはJREがインストールされている必要があります。

sudo keytool -import \
  -alias charles \
  -file ~/Desktop/charles-ssl-proxying-certificate.crt \
  -keystore $JAVA_HOME/jre/lib/security/cacerts \
  -storepass changeit

公式サイトのSSL Certificates • Charles Web Debugging Proxyにあるのですが、ドキュメントではファイル名が違ったり、JAVA_HOMEの$がないのでエラーになってしまいます。

これで準備完了です。

ネットワークアクセスする

設定後にJavaからmBaaSにアクセスすると、問題なくリクエスト内容やレスポンスが確認できるようになります。

これでデバッグ作業が捗ることでしょう。

まとめ

CharlesはmBaaSをAPIベースで利用する際には欠かせないツールです。ぜひお試しください!

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。