15.Android スマホにルート証明書をインストールする
Android スマホにルート証明書をインストールするのは、ちょっとややこしいです。
単純にルート証明書をメールで送ってインストールできるかと思ったらうまくできませんでした。
どうするかというと、まず、パソコンで micro SDHC カードに保存してスマホにインストールするか、または、USB ケーブルでスマホとパソコンを接続し、エクスプローラーでAndroid スマホの micro SDHC カードにアクセスして、証明書をコピーしてインストールします。
ネット調べると、その辺の情報が沢山あります。
ここではスマホと USB 接続してインストールする方法を説明します。
Android スマホは
docomo
SONY Xperia(TM) X Performance SO-04H
Android 7.0
で説明します。
まず、Android スマホに予めフォーマット済みの micro SDHC カードを入れておいてください。
次に、Android スマホとWindows 10 パソコンをUSB で接続すると、スマホ側に以下のような画面が出ますので、
「ファイルを転送する」
をタップします。
すると、Windows 10 パソコンには下図の様なフォルダが表示されると思いますので、SDカードをクリックします。
すると、下図の様に SDカード内のフォルダが表示されると思います。
上手く表示されない場合は、USB ポートを別のポートにするとか、再度挿し直すか、USB ケーブルを良質なものに変えてみて下さい。
そうしたら、適当な名前で新しいフォルダを作成しておきます。
ここでは「mgo-tec」としておきます。
次に、ルート証明書 esp32_ca.crt を作成したフォルダを開き、
先ほど作成したフォルダに、esp32_ca.crt をコピペします。
これで、USBケーブルを抜いてOKです。
次に、Android スマホ側のアプリ画面で「設定」をタップします。
次に、「ロック画面とセキュリティ」をタップします。
次に Android 8.0.0 の場合は、以下の「暗号化と認証情報」をタップします。
(※Android 7.0 にはこの画面はありませんので、無視して下さい)
次に、「機器メモリーかSDカードからインストール」をタップします。
次に、下図の様に三本線をタップします。
ここで、SDカードをタップします。
先ほど作成したフォルダをタップします。
自己ルート証明書、esp32_ca.crt をタップします。
すると、下図の様にスマホのパスワードを入力するか、指紋認証します。
すると、下図の画面になるので、適当な証明書名を入力します。
「認証情報の使用」では、
VPNとアプリ
を選択し、OKをタップします。
すると、ご自分のスマホにインストールされているセキュリティアプリによっては、以下のような画面が出る場合があります。
自己ルート証明書は自分自身で信頼しているので、ここではキャンセルをタップすれば良いです。
これでインストール完了ですが、念のため、インストールされているか調べます。
下図の様に、「ロック画面とセキュリティ」から
「信頼できる認証情報」
をタップします。
下図の様に「ユーザー」をタップすると、インストールした自己ルート証明書が見えます。
それをタップします。
すると、下図の様になっていればインストール成功です。
ちゃんとコモンネーム(CN) がルートCA用ESP-WROOM-32のIPアドレスになっています。
これで、Android スマホの自己ルート証明書インストール終了です。
次は実際にスマホでサーバーにアクセスしてみます。
コメント
mgo-tec 様
今回こそ何とか自力でクリアしようと望みましたがやはりダメでした。
試行錯誤しながら、「10. make flash コマンドで、ESP-WROOM-32 フラッシュへコンパイル書き込みする」まで到達しました。
openssl_CA のシリアルモニターでの確認において、ユーザーサーバー用ローカル IP アドレスが表示されません。
シリアルモニターには、
ESP_ERROR_CHECK failed: esp_err_t 0x1110 (ESP_ERR_NVS_NEW_VERSION_FOUND) at 0x400d2de5
file: “C:/msys32/home/USER-NAME/openssl_CA/main/openssl_server_example_main.c” line 261
func: app_main
expression: nvs_flash_init()
と表示されています。
「 SSL Server 自作するための OpenSSL 使用方法」を2回やり直して、本テキストに臨みましたが同じ結果となります。
気になる点:
① ESP-IDF の menuconfig 設定で、
make[1]: ディレクトリ ’/home/USER /esp/esp-idf/tools/kconfig’ に入ります
という表示がなく、menuconfig 画面に切り替わっています。
② 「 SSL Server 自作するための… 」の
3.ユーザーサーバー用の .cfg ファイルの編集のところで、
[ usr_cert ]
basic Constraints = CA: FALSE #170行目変更しない
とありますが、原文には、#basic Constrains … とあり、コメントアウトが必要?
抽象的な説明で申し訳ありません、何かヒントがありましたらご教示の程お願いいたします。
juchangさん
いつもお試しいただき、ありがとうございます。
今、新規記事アップのための編集大詰め状態ですので、回答は今しばらくお待ちくださいませ。
m(_ _)m
mgo-tec 様
お忙しいところご面倒をお掛けします。
その後の経過報告です。
ESP_ERROR_CHECK failed: esp_err_t 0x1110 (ESP_ERR_NVS_NEW_VERSION_FOUND) at 0x400d2de5
について、MSYS2 ツールチェーンのバージョンが、v3.1 と古いことが判明しました。(当初、20190611 を使用していましたが、うまくいかず 20181001 にしたら上記の結果となりました)
20190611 に戻し、本テキストに再チャレンジしているところですが、今度は、make menuconfig もエラーとなってしまいます。
テキストのどこの時点までさかのぼってやり直すべきか、OpenSSL の取得を含め、すべて delete してやり直すべきか悩んでいます。
juchangさん
新規記事アップに体力を大幅に消耗していて、なかなか検証できないでいます。
申し訳ございません。
まず、最新のツールチェーンは試していないので、20180110を使って下さい。
記事を書いた当初はそれで動作確認しています。
最新のツールチェーンはESP-IDFの使い方が変わっている可能性があります。
ESP-IDFの辛いところは、バージョンアップすると使えなくなる可能性が高いことです。
Arduino IDE は環境が殆ど変わらないので、うまく動作しない場合は先に進んで、以下の記事
Arduino – ESP32 で SSLサーバーを構築し、セキュアな Wi-Fi アクセスポイントセレクターを作ってみました
を試すという手がおススメです。
また、#basic Constrainsのところは、コメントを外してください。
そうしないとユーザーサーバーを認識しません。
以上、試してみて下さい。
juchangさん
OpenSSL の最新バージョンはまだ試していませんが、当方でtoolchain 20181001 を使って、ESP-IDF v3.3 にして、サンプルコードをmake flashしてみましたが、特に問題ありませんでした。
いつの間にかESP-IDFはstable版というものになっていたみたいですね。
この記事のToolChain リンクが古いままだったので、現在のURLに変更しました。
また、以下のリンク
https://docs.espressif.com/projects/esp-idf/en/stable/get-started/index.html#get-esp-idf
では、ESP-IDF clone する時に、ESP-IDFバージョン指定例が書いてありました。
それに習って、本記事も修正しました。
以下の様な感じです。
また、ESP-IDF の menuconfig 設定で、
という表示がない場合は、恐らく、PATHの指定が誤っているものと思われます。
今一度、この記事の
「3.MSYS2 の環境設定で ESP-IDF のパスを通すファイルを作成」
のところを参照して、ご自分のパソコン内のフォルダパスになっているか確認してください。
(’\’マークと’/’を間違えないようにしてください)
mgoさん
やっと鍵マークが出てきました。
MSYS2のインストールがうまく行きませんでした。バージョンを変えてもコンパイルできません。ESP-IDFのコマンドプロンプトでの環境設定やコンパイルはできるのでそちらで行いました。SSLが良くわかり、ありがとうございました。
okuさん
こんなマニアックな記事をご覧いただき、ありがとうございます。
この記事は3年近く前のものですが、動いて良かったです。
確かに、今のESP-IDFのバージョンなら、MSYS2よりもWindowsコマンドプロンプトで実行した方が確実ですね。
(^^)