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

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

こんばんは。

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

Amazon.co.jp
ESPr Developer 32
スイッチサイエンス(Switch Science)

その他、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.jpg


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

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

esp_idf_openssl_11.jpg


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

esp_idf_openssl_12.jpg


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

esp_idf_openssl_13.jpg


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

esp_idf_openssl_14.jpg


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

esp_idf_openssl_15.jpg


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

esp_idf_openssl_16.jpg


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

esp_idf_openssl_17.jpg


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

esp_idf_openssl_18.jpg


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

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


スポンサーリンク


「SSL Server 自作するための OpenSSL 使用方法」への3件のフィードバック

  1. お久しぶりです。HALです。

    自宅のWEBサーバーでWPAを動かすためにSSL対応する必要があり、
    こちらの記事を参考にさせて頂きました。

    とても詳しく説明して頂いたお蔭で、無事に対応が出来ました。
    ありがとうございます。
    最初は簡単そうなApachなどの別サイト記事をいくつか試してみたのですが全敗しました。
    いやー、これは凄いですね。実際に試して感動しました。
    Chromeの最新版に対応できるのが、とてもありがたいです。
    自力では絶対に無理でした。

    対価として支援させていただきます。

    ¥—–
    ギフト券番号:
    —————
    有効期限
    ————-

    1. (ブログを全面修復して、過去のコメントが消えてしまいました。
      以下、1/24時点のコメントを再投稿します。)

      HAL さん

      ご無沙汰しております。

      そして、かなり高額なご支援、ありがとうございます。
      とーってもウレシイです!!!

      そういえば、メール一切無しのご支援方法って、やっぱり斬新ですね。
      以前、コメント投稿でご支援いただきましたが、一瞬、メールを探してしまいました。
      本当に感謝しかありません。
      m(_ _)m

      ところで、あまり人気の無かったこの記事でお役に立てて、感無量でございます。
      この記事は結構苦労したんですよね。
      これは、実際に SSL 化した時の達成感はかなりありますよね。
      やった人でないと分からないと思います。
      HALさんにわかって頂けて、何よりです。
      報われた感があって、とっても嬉しいですね。

      最近は、忙しくてなかなか新たな工作ができませんが、おかげでがんばれそうな気がしました。
      ホントにありがとうございました。
      m(_ _)m

コメントを残す

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

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

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

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