【2024年版】休日でスキルアップ!初心者でも簡単にできるOpenSSLサーバー証明書作成ガイド

security
この記事は約6分で読めます。

初めに

本記事で得られる内容

今回はサーバー証明書発行の流れをハンズオン形式にてご紹介していきたいと思います!

本記事を読むことで得られる情報は下記のとおりです。

  • サーバー証明書の発行される流れ
  • OPEN SSLの使い方
  • サーバーについての知見

サーバー証明書について知識がある程度ある方は、下記章を飛ばしてお読みください。

下記内容はお使いのPCにて検証環境(PCが壊れても大丈夫な環境)にて実施お願いします。

どのような方向け?

今回は下記条件の方向けへ記事を書きたいと思います。

もちろん、以下の内容がわからない方向けにも可能な限りサポートはしていきます。

  • Virtual Boxにてサーバーを立ち上げることができる
  • コマンドプロンプトの基本的な使い方がわかる
  • 知識の習得に対して前向きな姿勢がある

検証環境

Virtual Boxにて2つの仮想マシンを使ってOpen SSLの操作~証明書の作成を行っております。

OS環境

今回は下記2環境にて実施しております!

  • Windows 11 Enterprise Evaluation

メインはwindows 11の環境にて実施しています。

Virtual Box ネットワーク環境

  • NATネットワーク

自分が使用するメインPC(ホストOS)とは通信させずにあくまでもゲストOS間のみで通信可能なネットワーク環境にしました。

サーバー証明書の種類

サーバーの種類は大きく分けて下記になります。

  • 自己証明書(証明者が自分自身)
  • 認証局による証明書(社会的に信用がある誰か)

もう少し補足した情報は下記になります。CA(認証局)が証明した証明書は信用の度合いによって、さらに3つの証明書に分けることができます

Open SSLとは

OpenSSLにてハンズオン

  1. Open SSLにてサーバー証明書を発行
  2. Windows IISにサーバー証明書をインストール
  3. 動作確認

インストール手順

この記事を読んでいる皆さんは「早くOpenSSLの使い方を教えてくれよ!」と血眼になっている熱意の持ち主の方だと思われますので、さっそく練習がてらOpenSSLのハンズオンを実施していきたいと思います。

まずは手慣らしからテキストファイルを暗号化して復号をやっていこうと思います!

暗号化

デスクトップ画面に1つテキストファイルを作成してください。もしファイル名が思いつかなかったら、下記ファイル名を真似して作ってみてください。私の場合はtest.txtを作成しました。

テキストファイルの中身になんでもいいので適当に意味が分かる文章を入力して保存してください。

下記ボタンを押し、ファイル名を指定して実行を開き、cmdと入力してください。

ファイル名を指定して実行があまりよくわからない方は下記記事を読んでみてください。

ざっくり言えば、windowsの機能をコマンドで立ち上げることができるツールのようなものです。

コマンドプロンプトが立ち上がります。

今回は先ほど作成したtest.txtがopensslにて暗号化~復号されたファイルが確認しやすいようにデスクトップへディレクトリを移動します。

下記コマンドを入力してください。

openssl enc -aes-256-cbc -in test.txt -out encrypted.enc

コマンドを入力するのが面倒な人は下記コマンドをコピー&ペーストしてください。入力が終わったら、Enterを押します。

復号する際のパスワードを設定します。ここでは「test」と入力してEnterを押します。

ここではお好きなパスワードを設定して構いません。

パスワードはコマンドプロンプト上に表示されません。

確認用にもう一度パスワードを入力して、Enterを押します。

きちんとパスワードができると、暗号化されたファイルが出来上がります。

encrypted.encをダブルクリックしてみてください。暗号化されているか確認できます。

復号手順

下記コマンドを入力します。

復号されたファイルをダブルクリックし、もとに書き込んだ文字が表示されれば、復号は完了になります!

サーバー証明書の発行手順

サーバー証明のステップは大きく分けて6つあります。

  • 秘密鍵の作成
  • 公開鍵の作成(後述しますが、別途作成する必要はないです)
  • CSR(証明書署名要求)の作成
  • 認証局による認証 ← 今回はここを自作の認証局で行う
  • 証明書の発行
  • 証明書のインストール

自分で認証局を作る自己証明書、認証局によるサーバー証明書、どちらも1~3までは手順は同じです。

イラストで記載すると下記のような感じです。

今回のハンズオンのミソはずばり4番です。本来は、社会的に信用がある認証機関に自分で作成したSCRを提出して、サーバー証明書を発行してもらいます。が、今回はこの認証局も自分でやってしまおうという試みになります。

では、open sslにてサーバー証明書を作成していきましょう!

秘密鍵の作成

まずは、秘密鍵を作成する手順になります。下記コマンドをコピー、もしくは入力してください。

そして、コマンドプロンプト上でテキストを張り付けて、Enterキーを押します。

openssl genrsa -out myprivate.key 2048

実際に入力した画面は下記のとおりです。

正しくコマンドが入力されるとmyprivate.keyが作成されます。

中身はこんな感じです。正直、謎の文字列の羅列がされているただのテキストファイルのように見えますが、こちらが秘密鍵になります。

この鍵は、自分が持つだけの鍵になります。絶対にほかの人には教えてはいけません。今回は検証にて中身を公開しておりますが。

CSR(証明書署名要求)の作成

CSRを作成する手順になります。コピーもしくは下記コマンドをコマンドプロンプト上に入力して、Enterをおしてください。

openssl req -new -key myprivate.key -out server.csr

サーバー証明書の発行

最後にサーバー証明書の発行手順になります。コピーもしくは下記コマンドをコマンドプロンプト上に入力して、Enterを押してください。

openssl x509 -req -days 365 -in server.csr -signkey myprivate.key -out myserver.crt

きちんとコマンドが入力できている場合、デスクトップに下記のような拡張子が.crtのファイルができているはずです!

windowsの場合、わかりやすくアイコンも証明書のアイコンになってくれるので成功したかどうかわかりやすいですね。(笑)

番外編:公開鍵の出力

通常、公開鍵は秘密鍵を生成する際に自動で作成されるため、別途、手動で作る必要はありません。

ただし、秘密鍵の中身を見たのに公開鍵を見ないのは気持ち悪いですよね。

そんなあなたには下記コマンドを入力してください。

openssl rsa -in myprivate.key -pubout -out mypublic.key

入力が成功すると、デスクトップに下記画面が表示されます。

ファイルの中身はこんな感じ。秘密鍵と比べるとかなり文字が少ないですね。

以上が作成手順になります。

参考文献

https://envader.plus/article/390

https://www.tohoho-web.com/ex/openssl.html

コメント

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