SSLサーバー証明書はウェブサーバーやその他のネットワークサービスで使用され通信のセキュリティを確保します。
本記事ではWindowsでOpenSSLを使用して自己署名によるSSLサーバー証明書を作成する方法について解説します。
エンジニアとして働くための実践力を高めたいならRUNTEQがオススメです。
Web系エンジニアを目指す方は一度無料キャリア相談会にご参加ください!
RUNTEQ(ランテック) – 実践型Webエンジニア養成プログラミングスクール
相談会の参加を悩んでいる方はRUNTEQの運営会社の代表取締役 菊本 久寿さんの著書
「エンジニア×スタートアップ」こそ、最高のキャリアである を一度よんでください。
参加したくなること間違いなしです!
読む時間がない方は以下の書籍紹介の記事をごらんください。
目次
動作確認環境
Windows11
OpenSSLとは
暗号化や認証などの機能を提供するオープンソースの暗号ライブラリです。
SSL/TLSプロトコルの実装や証明書管理など、セキュアな通信に関する多くの機能を提供しています。
OpenSSLの特徴
- オープンソースであり無料で利用可能
- クロスプラットフォーム対応(Windows、Linux、macOSなど)
- SSL/TLSプロトコルの実装や証明書管理など多岐にわたる機能を提供
- コマンドラインツールとして利用できるため柔軟な操作が可能
OpenSSLのダウンロード・インストール
以下のサイトからOpenSSLをダウンロード・インストールします。
OpenSSLコマンドにパスを通す
インストール後、OpenSSLのコマンドが利用可能になるように環境変数のパスに追加します。
OpenSSLによる自己署名によるSSLサーバー証明書の作成
以下の手順に従って、自己署名によるSSLサーバー証明書を作成します。
秘密鍵を作成する
まず秘密鍵を以下のコマンドで作成します。
openssl genrsa -out server.key 2048
RSAと呼ばれる暗号方式で秘密鍵を作成し鍵の長さは2048bitとしています。
server.keyは秘密鍵の名称であり任意の名称を指定することができます。
証明書署名要求を作成する
次に証明書署名要求(CSR)を以下のコマンドで作成します。
openssl req -new -key server.key -out server.csr
server.csrは作成済みの秘密鍵(server.key)に対応する証明書署名要求であり任意の名称を指定することができます。
コマンド実行後に様々な設定項目に対する名称を指定するようなメッセージが表示されます。基本的には何も設定しなくてOKですが、Common NameにはサーバーのFQDNを設定しましょう。
自己署名証明書を作成する
最後に自己署名証明書を作成します。これにより、SSL通信のクライアントがサーバーを認証できるようになります。
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
server.crtは自己署名証明書であり任意の名称を指定することができます。
有効期限は365日としています。
秘密鍵、証明書署名要求、自己署名証明書の説明
- 秘密鍵(server.key): サーバー側で保持される秘密鍵。SSL通信の暗号化に使用されます。
- 証明書署名要求(CSR)(server.csr): サーバーの公開鍵とサーバーに関する情報が含まれた署名要求。通常は認証局(CA)によって署名され証明書が発行されますが、今回の場合では自己署名されます。
- 自己署名証明書(server.crt): サーバーが自己署名した証明書。SSL通信のクライアントにサーバーの正当性を証明しますが信頼性はCAによる証明書と比べて低くなります。