【初心者向け】OpenSSLでサーバー証明書を作成する方法を解説

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

初めに

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

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

本ブログで得られる情報
  • サーバー証明書の発行される流れ
  • OPEN SSLの使い方
  • サーバーについての知見

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

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

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

  1. Virtual Boxにてサーバーを立ち上げることができる
    • Open SSLを安全に試せる検証環境を用意するためになります。
  2. コマンドプロンプトの基本的な使い方がわかる
    • Open SSLはコマンドプロンプトを利用したCLIベースのツールになるためです。

検証環境

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

  • Windows 11 Enterprise Evaluation
  • NATネットワーク

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

サーバー証明書の種類

OPEN SSLの使い方を説明する前にまずは基本的なサーバー証明書の説明をしていきたいと思います。

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

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

認証局は通称「CA」と呼ばれ、CAが証明した証明書は信用の度合いによって、さらに3つの証明書に分けることができます

OpenSSLにてハンズオン

OPEN SSLにて検証を行う内容と流れは下記の通りです。

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

インストール手順

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

OPEN SSLにて暗号化を行う

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

デスクトップ、もしくはお好きなフォルダーに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をコピーしました