HTTPプロトコルは平文でデータを送受信するため、通信内容の盗聴や改ざんのリスクが伴います。一方、HTTPSはSSL/TLSプロトコルを用いて通信を暗号化し、サーバー認証とデータの保護を実現します。Webサーバーとして広く利用されているNginxでHTTPSを有効にするには、SSL証明書の適切な設定が必要です。
SSL証明書の準備と配置
認証局(CA)から発行されたSSL証明書を取得します。取得後、証明書ファイル(例: server_cert.pem)と秘密鍵ファイル(例: server_key.pem)の2つをNginxがアクセス可能なディレクトリに配置します。ここでは例として /etc/nginx/ssl/ ディレクトリを作成して保存します。
NginxのSSLモジュール確認
設定を進める前に、現在稼働しているNginxがSSL機能をサポートしているか確認します。ターミナルで以下のコマンドを実行します。
nginx -V
出力結果の中に --with-http_ssl_module が含まれていれば、SSLモジュールが有効になっています。含まれていない場合は、後述の「SSLモジュールの追加手順」に従ってNginxを再コンパイルしてください。
Nginxの設定ファイル編集
Nginxの設定ファイル(通常は /etc/nginx/nginx.conf または conf.d 配下のファイル)を開き、HTTPS通信用のサーバーブロックを追加または修正します。リッスンポートを443に指定し、証明書のパスを記述します。
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /etc/nginx/ssl/server_cert.pem;
ssl_certificate_key /etc/nginx/ssl/server_key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
# その他の必要な設定...
}
設定ファイルの記述が完了したら、構文チェックを行い、問題なければNginxをリロードして設定を反映させます。
nginx -t && nginx -s reload
SSLモジュールの追加手順(再コンパイル)
SSLモジュールが含まれていないNginxで ssl_certificate ディレクティブを使用すると、unknown directive "ssl_certificate" というエラーが発生します。この場合、既存の設定を維持したままモジュールを追加して再コンパイルする必要があります。
- Nginxのソースコードを展開したディレクトリに移動します。
- 以下のコマンドを実行し、SSLモジュールを含めるよう設定します。
./configure --with-http_ssl_module - コンパイルを実行します。この時、既存の設定ファイルを上書きしないよう
make installは実行しないでください。make - コンパイルが完了すると、
objsディレクトリ配下に新しい実行ファイルnginxが生成されます。現在の実行ファイルをバックアップした後、新しく生成されたものに置き換えます。cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak cp objs/nginx /usr/local/nginx/sbin/nginx
実行ファイルの置き換え後は、再度Nginxの設定ファイル編集に戻り、SSL証明書の設定を行ってください。