自己署名証明書によるNginx環境構築

目次

概要

NginxはオープンソースのWebサーバーです。個人開発のプロジェクトから、大手の製薬会社やメガバンク等においても同じものが使われています。Nginxに拡張機能を加えた、Nginx Plus もあります。

AWSやMicrosoft Azure、IBM Cloud、Oracle Cloud 等の各種パブリッククラウド、あるいはプライベートクラウドでは、仮想サーバーを用いてNginxを使う機会が多くあるため、この教材では、仮想サーバーを用いて、Nginx環境を構築について学びます。

仮想サーバーの用意

例として、仮想環境としてVirtualBoxを使っていますが、他の仮想環境でも構いませんです。仮想サーバーは2台用意します。そして双方にIPアドレスが割り当てられ、通信ができる必要があります。

< 以下は、VirtualBoxを使った場合の例 >

仮想サーバーのスペック

  • OS:Ubutnu Server 22.04

  • 仮想CPU割り当て数 : 1

  • 仮想メモリ割り当て:2048MB(2GB)以上

  • 仮想ディスク:64GB以上

  • ネットワーク設定:NAT + ホストオンリーアダプタの構成。ホストオンリーアダプタには、固定IPを割り当てること。

  • デスクトップ環境:なし

  • SSH接続:必須 ( ユーザー名 + パスワードでもOK )

仮想サーバー の設定

  • ホストオンリーアダプタの固定IP例:192.168.253.10

  • Your server’s name (ホスト名):nginx1

  • ユーザー名 : vboxuser

  • パスワード:任意のもの

作業場所

仮想サーバーにSSH接続を行います。SSH接続先のユーザーのホームディレクトリで作業を行います。( 例 /home/vboxuser )

準備作業

タイムゾーンを日本時間に変更します。

sudo timedatectl set-timezone Asia/Tokyo

Ubuntuを最新の状態にアップデートするため、次のコマンドを実行します。

sudo apt-get update -y sudo apt-get upgrade -y

「Daemons using outdated libraries」の画面が表示されるので、Tabsキーで操作し<OK>を選んで、Enterキーを押す。

自己署名証明書の作成

SAN(Subject Alternative Name)の作成

次のコマンドを実行します。

nano example-san.txt

中身は次のように記述します。

DNSにワイルドカードを使うことができますが、IPアドレスにワイルドカードを使うことはできません。

秘密鍵の作成 ( example-server.key )

2048bitの秘密鍵を作成するため、次のコマンドを実行します。

証明書署名要求の作成 ( example-server.csr )

秘密鍵 ( example-server.key ) を用い、証明書署名要求 ( example-server.csr ) を作成するため、次のコマンドを実行します。

証明書署名要求に必要な項目について入力を求められるので、入力します。下記は例です。空白部分は、Enterキーを押して飛ばしています。

サーバー証明書の作成 ( example-server.crt )

証明書署名要求 ( example-server.csr ) を自分の秘密鍵 ( example-server.key ) で署名してサーバー証明書を作成するため、次のコマンドを実行します。

実行結果

サーバー証明書の配置

作成したサーバー証明書を、Ubuntuで推奨している証明書ディレクトリに複製し移動するため、次のコマンドを実行します。

コピーされたことを確認するため、次のコマンドを実行します。

実行結果

秘密鍵の配置

作成したサーバー証明書に対応する秘密鍵を、Ubuntuで推奨している証明書ディレクトリに複製し移動するため、次のコマンドを実行します。

コピーされたことを確認するため、次のコマンドを実行します。

実行結果

Nginxを用いたWebサーバーの構築

Nginxのインストール

SSL/TLS接続設定ファイルの作成

設定ファイルの作成

記述内容

設定ファイルのエラーチェックをかけます。

実行結果

hostsファイル

Windows 環境の場合

C:\Windows\System32\drivers\etc 下に、hostsファイルがあります。

Mac 環境の場合

/private/etc/ の下に、hostsファイルがあります。

hosts ファイルの編集

hostsファイルの末尾に追記し、保存します。

192.168.253.10 は、この資料ではNginxを動かす仮想サーバーの固定IPアドレスです。

w1.example.edu は、Nginx環境で用いるFQDNです。hostsファイルに「192.168.253.10 w1.example.edu」を記述することで、w1.example.eduにアクセスすると、192.168.253.10のIPアドレスを割り当てているサーバーに接続するようになります。hosts ファイルで管理しきれない規模の場合は、DNSを使います。

接続確認

Nginxの起動

Nginxの自動起動

Webブラウザで、https://w1.example.edu にアクセスする。自己署名証明書であり、秘密鍵をパソコンにインストールしていないため警告が表示される。

「詳細設定」>>「w1.example.edu に進む (安全ではありません)」の順にクリックすることで、Nginxのトップページが表示される。

リバースプロキシの適用例

構築したNginx環境を活用し、チャットシステムを構築し、リバースプロキシとしてNginxを使いましょう。

https://mydocument.atlassian.net/wiki/spaces/support4textbook/pages/1730117633