SSL Server 自作するための OpenSSL 使用方法

記事公開日:2018年3月8日
最終修正日:2018年3月15日

こんばんは。

ESP32 ( ESP-WROOM-32 )で SSL サーバーを構築するための第2弾として、今回は OpenSSL の使い方を自分なりの備忘録的に書いてみようと思います。

これだけでもあまりにも膨大な量です。
書いている途中で、どんどん量が増えていったので、疲れ果ててしまいました。
ですから、ESP32 ( ESP-WROOM-32 )自体のESP-IDF 開発方法は次回の記事で紹介します。

しかし、OpenSSL は今回初めて使いましたが、スンゴイ便利でよくできたソフトウェアですね。
これを作った人々は尊敬に値します。
今の情報化社会で、こういう人たちこそが世の中を支えているんだと思いました。
我々はその方々の作り上げた財産を使わせてもらっているだけなので、感謝しかありません。
ありがとうございます。
m(_ _)m

では、OpenSSL を使うためには、前回の記事にあるようなSSL/TLS や 公開鍵暗号化方式などの予備知識がないと使えないので、ある程度理解したとして話を進めていきます。

何度も言いますが、私はサーバー関連や OpenSSL はド素人ですので、誤っているかもしれません。
もし、発見したらコメント投稿等でご連絡いただけると助かります。

※以下、Windos10 で説明します

スポンサーリンク

    【目次】

  1. OpenSSLとは
  2. OpenSSL を使う上で必要な用語
  3. 使用するハードウェア
  4. 作成予定のサーバーのローカル IP アドレスを調べておく
  5. OpenSSL を WindowsPC にインストールする
  6. Open SSL のコマンドライン用パスを通す
  7. OpenSSL 動作確認
  8. OpenSSL 作業用フォルダおよびファイル作成下準備
  9. ルート認証局 ( CA ) 秘密鍵および証明書作成
  10. ユーザーサーバー証明書署名要求 ( CSR )ファイルとユーザーサーバー用秘密鍵生成
  11. ルート認証局の署名付きサーバー証明書の生成
  12. CRT証明書をPEM形式に変換する
  13. トラブルシューティング
  14. 参考にさせていただいたサイト

1.OpenSSLとは

私は最近使い始めたばかりで、正直言って詳しいことは良く分かりませんが、ザッと簡単に自分なりに書きます。

OpenSSL とは、https://www.openssl.org/で開発されている、オープンソースソフトウェアです。
参照:https://ja.wikipedia.org/wiki/OpenSSL

秘密鍵や公開鍵、ルート認証局 ( CA )証明書を自分自身で署名して生成したり、そのCA署名付きサーバー証明書を生成したりできる、夢のようなソフトウェアです。
これがあれば、電子工作用途マイコンと、スマホブラウザとのネット通信で SSL/TLS 暗号化通信が可能になります。

2.OpenSSL を使う上で必要な用語

前回の記事をおさらいして、OpenSSL を使う上で必要な用語を挙げると、

●公開鍵暗号化方式( PKI )
●秘密鍵
●公開鍵
●x509様式、およびそのバージョン V3
●ルート認証局およびその証明書
●署名
●証明書署名要求( CSR )
●認証局署名付き証明書( CRT )
●PEM形式

こんなところでしょうか。
これだけ見ると、結構覚えることありますね。

3.使用するハードウェア

今回は、ESP32 ( ESP-WROOM-32 )をSSLサーバーとする目的ですが、既に別のサーバーを所有していれば、それを使っても良いです。

ESP-WROOM-32 ( ESP32 )開発ボード 2台

今回は2台使います。
私の場合は、USB電源の突入電流や保護機能が充実したスイッチサイエンスさんの ESPr Developer 32 をお勧めします。

Amazon.co.jp

[スイッチサイエンス]ESPr® Developer 32

その他、Espressif Systems 社純正の ESP32-DevKitC でもOKです。

その他、パソコン、USBケーブル等

4.作成予定のサーバーのローカル IP アドレスを調べておく

別途サーバーがあれば良いのですが、無ければ、2台の ESP32 ( ESP-WROOM-32 )を使います。
1つはルート認証局用、もう一つは実際にSSL通信するユーザーサーバー用と決めておきます。

予め、Arduino IDE のサンプルスケッチ WiFiClient.ino などをコンパイルするなどして、シリアルモニター等でローカル IP アドレスを確認しておいてください。
STA モードの IP アドレスですので、間違えないようにしてください。
もし、分からない場合は、記事を読み進んでいってください。
次回アップする記事で紹介しますが、ESP-IDF で make コンパイルした後、シリアルモニターで IP アドレスが確認できます。

また、予め、Arduino – ESP32 で、ESP32 の適当な Wi-Fi サンプルスケッチをコンパイルして、IP アドレスを確認しておくということでも良いと思います。

また、Wi-Fi ルーターの DHCP で自動割り当てされた IP アドレスは、ルーターをリセットすると変わってしまいます。
固定IPアドレス設定にする方が良いと思われます。

5.OpenSSL を WindowsPC にインストールする

Open SSL の公式サイトがありますが、そこにはソースファイルしかないので、コンパイル済みのファイルは以下のサイトを開きます。

http://slproweb.com/products/Win32OpenSSL.html

すると、下図の様な画面が出てくるので、最新版をダウンロードします。
2018/02/28 時点では、v1.0.2 というバージョンです。
最新版でないと脆弱性対策が施されていないので注意してください。
32bitパソコンならば、Win32 OpenSSL v1.0.2n
64bit パソコンならば、Win64 OpenSSL v1.0.2n
をクリックします。
すると、exe 形式の実行ファイルがダウンロードされます。
Light 版ではないものを使います

ESP_IDF_OpenSSL_10

すると、64bit の場合、
Win64OpenSSL-1_0_2n.exe
というファイルがダウンロードされるので、それをダブルクリックして、インストール開始します。

すると、下図の様な画面が出るので、「Next」をクリック。

ESP_IDF_OpenSSL_11

次に下図の様な画面が出るので、ライセンス規約を読んで同意すれば、下図の様に選択して、「Next」をクリック。
ライセンス文には、寄付しないのは「ダサいよ」みたいなことが書いてあります。

ESP_IDF_OpenSSL_12

次に、下図の画面が出てくるので、インストールしたいフォルダを選択します。
私の場合は、Dドライブにしました。

ESP_IDF_OpenSSL_13

次に、下図の画面になるので、Windowsスタートメニューに表示させたい名前を記入します。

ESP_IDF_OpenSSL_14

次に、下図の様な画面になります。
作業用ファイルを Windowsシステムディレクトリに保存することは、システムに影響を及ぼす恐れがあるので、私は OpenSSL の /bin ディレクトリを選択しました。

ESP_IDF_OpenSSL_15

下図の画面で確認して、問題無ければインストール開始します。

ESP_IDF_OpenSSL_16

すると、こんな感じでインストール開始します。

ESP_IDF_OpenSSL_17

インストール終了すると、下図の画面が出るので、寄付するのであれば何れかにチェックしてください。
寄付しないのであればチェックを外して、「Finish」します。

ESP_IDF_OpenSSL_18

私自身、無料で公開することの大変さを十分承知しているので、寄付しようと思います。
オープンソースプロジェクトの人たちも生活しなければならないですからね。

これで、Open SSL のインストールは完了です。
次では、コマンドライン用のパス設定をします。

スポンサーリンク


mgo-tec電子工作 関連コンテンツ ( 広告含む )

投稿者:

mgo-tec

Arduino , ESP32 ( ESP-WROOM-32 ) , ESP8266 ( ESP-WROOM-02 )等を使って、主にスマホと連携した電子工作やプログラミング記事を書いてます。ライブラリも作ったりしてます。趣味、独学でやってますので、動作保証はしません。 電子回路やプログラミングの専門家ではありません。 畑違いの仕事をしていて、介護にドップリ浸かりそうな年配者です。 少しだけ電気の知識が必要な仕事なので、電気工事士や工事担任者等の資格は持っています。

コメントを残す

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

*画像の文字を入力してください。(スパム防止の為)

This site uses Akismet to reduce spam. Learn how your comment data is processed.