ESP32-WROOM-32 で信頼ある SSL サーバーを自作する ( ESP-IDF編 )

記事公開日:2018年3月13日


スポンサーリンク

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 で接続すると、スマホ側に以下のような画面が出ますので、
「ファイルを転送する」
をタップします。

esp_idf_openssl_server78.jpg


すると、Windows 10 パソコンには下図の様なフォルダが表示されると思いますので、SDカードをクリックします。

esp_idf_openssl_server79.jpg


すると、下図の様に SDカード内のフォルダが表示されると思います。
上手く表示されない場合は、USB ポートを別のポートにするとか、再度挿し直すか、USB ケーブルを良質なものに変えてみて下さい。

そうしたら、適当な名前で新しいフォルダを作成しておきます。
ここでは「mgo-tec」としておきます。

esp_idf_openssl_server80.jpg


次に、ルート証明書 esp32_ca.crt を作成したフォルダを開き、
先ほど作成したフォルダに、esp32_ca.crt をコピペします。

esp_idf_openssl_server81.jpg


これで、USBケーブルを抜いてOKです。

次に、Android スマホ側のアプリ画面で「設定」をタップします。

esp_idf_openssl_server82.jpg


次に、「ロック画面とセキュリティ」をタップします。

esp_idf_openssl_server83.jpg


次に Android 8.0.0 の場合は、以下の「暗号化と認証情報」をタップします。
(※Android 7.0 にはこの画面はありませんので、無視して下さい)

esp32_ssl_dnsserver0005.jpg


次に、「機器メモリーかSDカードからインストール」をタップします。

esp_idf_openssl_server84.jpg


次に、下図の様に三本線をタップします。

esp_idf_openssl_server85.jpg


ここで、SDカードをタップします。

esp_idf_openssl_server86.jpg


先ほど作成したフォルダをタップします。

esp_idf_openssl_server87.jpg


自己ルート証明書、esp32_ca.crt をタップします。

esp_idf_openssl_server88.jpg


すると、下図の様にスマホのパスワードを入力するか、指紋認証します。

esp_idf_openssl_server89.jpg


すると、下図の画面になるので、適当な証明書名を入力します。
「認証情報の使用」では、
VPNとアプリ
を選択し、OKをタップします。

esp_idf_openssl_server90.jpg


すると、ご自分のスマホにインストールされているセキュリティアプリによっては、以下のような画面が出る場合があります。
自己ルート証明書は自分自身で信頼しているので、ここではキャンセルをタップすれば良いです。

esp_idf_openssl_server91.jpg


これでインストール完了ですが、念のため、インストールされているか調べます。

下図の様に、「ロック画面とセキュリティ」から
「信頼できる認証情報」
をタップします。

esp_idf_openssl_server92.jpg


下図の様に「ユーザー」をタップすると、インストールした自己ルート証明書が見えます。
それをタップします。

esp_idf_openssl_server93.jpg


すると、下図の様になっていればインストール成功です。

esp_idf_openssl_server94.jpg


ちゃんとコモンネーム(CN) がルートCA用ESP-WROOM-32のIPアドレスになっています。

これで、Android スマホの自己ルート証明書インストール終了です。

次は実際にスマホでサーバーにアクセスしてみます。


スポンサーリンク


「ESP32-WROOM-32 で信頼ある SSL サーバーを自作する ( ESP-IDF編 )」への5件のフィードバック

  1. 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 … とあり、コメントアウトが必要?
    抽象的な説明で申し訳ありません、何かヒントがありましたらご教示の程お願いいたします。

    1. juchangさん

      いつもお試しいただき、ありがとうございます。

      今、新規記事アップのための編集大詰め状態ですので、回答は今しばらくお待ちくださいませ。
      m(_ _)m

      1. 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 してやり直すべきか悩んでいます。

        1. juchangさん

          新規記事アップに体力を大幅に消耗していて、なかなか検証できないでいます。
          申し訳ございません。

          まず、最新のツールチェーンは試していないので、20180110を使って下さい。
          記事を書いた当初はそれで動作確認しています。
          最新のツールチェーンはESP-IDFの使い方が変わっている可能性があります。
          ESP-IDFの辛いところは、バージョンアップすると使えなくなる可能性が高いことです。
          Arduino IDE は環境が殆ど変わらないので、うまく動作しない場合は先に進んで、以下の記事
          Arduino – ESP32 で SSLサーバーを構築し、セキュアな Wi-Fi アクセスポイントセレクターを作ってみました
          を試すという手がおススメです。

          また、#basic Constrainsのところは、コメントを外してください。
          そうしないとユーザーサーバーを認識しません。

          以上、試してみて下さい。

          1. 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バージョン指定例が書いてありました。
            それに習って、本記事も修正しました。
            以下の様な感じです。

            git clone -b v3.3 --recursive https://github.com/espressif/esp-idf.git

            また、ESP-IDF の menuconfig 設定で、

            make[1]: ディレクトリ ’/home/USER /esp/esp-idf/tools/kconfig’ に入ります

            という表示がない場合は、恐らく、PATHの指定が誤っているものと思われます。
            今一度、この記事の
            「3.MSYS2 の環境設定で ESP-IDF のパスを通すファイルを作成」
            のところを参照して、ご自分のパソコン内のフォルダパスになっているか確認してください。
            (’\’マークと’/’を間違えないようにしてください)

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください