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

ESP32 ( ESP-WROOM-32 )

8.ルートCA用、ESP-IDF の menuconfig 設定

では、ESP-IDF のプログラム毎の環境設定をします。
まず、MSYS2 ウィンドウを開きます。

次に、cdコマンドで、ルートCA用のディレクトリに移動します。
(USER はご自分のユーザー名です)
※ファイルパスは’¥’ではなく、半角スラッシュですのでご注意!

cd D:/msys32/home/USER/openssl_CA

次に、以下のコマンドを入力します。

make menuconfig

すると、下図の様に、初回は40秒くらい待つと、makeログが出力されます。

しばらく経つと、下図の様にmenuconfig画面が出ますので、
Serial flasher config を選択して Enter を押してください。
なお、このmenuconfig 画面の操作はマウスは使えません。
キーボードの矢印キーで選択したり、「ESC」キーを使ったりしますので、以下の記事を参照の上、操作してください。
ESP-IDF ( ESP32 開発環境 ) の使い方

Serial flasher config 設定は以下のようにしてみてください。

【Serial flasher config 項目設定例】
Default serial prot : ご自分の ESP32 の USBポート
Default baud rate : 921600 baud
Flash SPI mode : QIO
Flash SPI speed : 80 MHz
Flash sise : 4 MB

COMポートの設定確認方法も ESP-IDFの使い方記事で確認してください。

結果、下図の様な感じになりますので、必ず「Save」しておいてください。

次に、下図の様に、Example Configuration 設定を選択します。
因みに、この画面はmenuconfig のTop画面ですが、この画面に戻るためには、先の画面から「Esc」キーを2回連続で打つと、一つ前の画面に戻るので、それを繰り返せば、この Top画面に戻ることができます。

Example Configuration の設定では、ご自分の Wi-Fi ルーター(アクセスポイント)の SSID とパスワードを入力します。
パソコンでコピー&ペーストをする場合、通常の「Ctrl」+「V」は使えません。
Windowsパソコンの場合は、右クリックで貼り付けするか、
「Shift」+「Ins」キー
で貼り付けます。
元の文字をバックスペースで削除してから貼り付けてください。
入力終わったら、必ず「Save」すること忘れずに。

次に、Component config 設定を選択します。

Component config 設定は以下のようにしてみてください。

【Componet config 項目設定例】
●ESP32-specific 項目
CPU frequency : 240 MHz
●OpenSSL 項目
Check and exit

終わったら、必ず「Save」して設定を保存することを忘れないように。

これで、menuconfig設定終了です。
「Exit」を何度か選択するか、「Esc」キーを何回か押すなどして、menuconfig画面から抜けてください。

すると、下図の様になり、環境設定が生成されます。

9.ユーザーサーバー用、ESP-IDF の menuconfig 設定

では、次にユーザーサーバー用、menuconfig設定をします。
ルートCA用と殆ど同じです。

まず、ディレクトリを移動します。
(USER はご自分のユーザー名です)

cd D:/msys32/home/USER/openssl_server

その後、make menuconfig コマンドを打って、同じように設定すればOKです。

10.make flash コマンドで、ESP-WROOM-32 フラッシュへコンパイル書き込みする

では、いよいよサンプルプログラムのコンパイル書き込みをします。

まず、2つあるESP-WROOM-32 開発ボードのうち、先に述べたように、ルートCA用として選んでおいたものをUSBでパソコンに接続します。

次に、MSYS2ウィンドウで、ルートCA用ファイルのディレクトリに移動します。
(USER はご自分のユーザー名です)

cd D:/msys32/home/USER/openssl_CA

そうしたら、以下のコマンドを入力します。

make flash

すると、下図の様にコンパイルが始まりますが、初回は5分くらいかかる場合がありますので、気長に待ってください。

5分くらい経ち、コンパイルに成功すると、下図のようになります。
因みに、Arduino IDE などのシリアルモニターで、USBポートを使用しているとコンパイルエラーになりますので注意してください。

同じように、今度はユーザーサーバー用をコンパイル書き込みします。

ESP-WROOM-32 のユーザーサーバー用を選び、パソコンにUSB接続しておきます。

そして、ユーザーサーバー用ディレクトリに移動します。
(USER はご自分のユーザー名です)

cd D:/msys32/home/USER/openssl_server

その後、make flashコマンドを打って、同じようにコンパイルすればOKです。

次ではシリアルモニターの確認を説明します。

コメント

  1. juchang より:

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

    • mgo-tec mgo-tec より:

      juchangさん

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

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

      • juchang より:

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

        • mgo-tec mgo-tec より:

          juchangさん

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

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

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

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

          • mgo-tec mgo-tec より:

            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 のパスを通すファイルを作成」
            のところを参照して、ご自分のパソコン内のフォルダパスになっているか確認してください。
            (’\’マークと’/’を間違えないようにしてください)

  2. oku より:

    mgoさん
    やっと鍵マークが出てきました。
    MSYS2のインストールがうまく行きませんでした。バージョンを変えてもコンパイルできません。ESP-IDFのコマンドプロンプトでの環境設定やコンパイルはできるのでそちらで行いました。SSLが良くわかり、ありがとうございました。

    • mgo-tec mgo-tec より:

      okuさん

      こんなマニアックな記事をご覧いただき、ありがとうございます。

      この記事は3年近く前のものですが、動いて良かったです。
      確かに、今のESP-IDFのバージョンなら、MSYS2よりもWindowsコマンドプロンプトで実行した方が確実ですね。
      (^^)

タイトルとURLをコピーしました