開発運用

Nginx SSL証明書設定ガイド

Nginxサーバー用のSSL証明書をUbuntu 14.04で作成する方法について、以下に完全かつ包括的な記事を日本語で説明します。


はじめに

インターネット上でセキュアな通信を実現するためには、SSL(Secure Sockets Layer)証明書を使用することが不可欠です。SSL証明書は、ウェブサイトとその利用者の間で送受信されるデータを暗号化し、盗聴や改ざんから守ります。この記事では、Ubuntu 14.04でNginxサーバーを使用して、SSL証明書を作成し、HTTPS通信を有効にする方法を詳細に説明します。

必要な前提条件

  • Ubuntu 14.04がインストールされたサーバー
  • Nginxがインストールされていること
  • サーバーにはドメイン名が設定されていること(例:example.com
  • サーバーへのrootまたはsudoユーザー権限

1. OpenSSLのインストール

SSL証明書を生成するためには、まずOpenSSLをインストールする必要があります。OpenSSLは、暗号化関連のライブラリとツールを提供するオープンソースのソフトウェアです。

ターミナルを開き、次のコマンドを実行してOpenSSLをインストールします。

bash
sudo apt-get update sudo apt-get install openssl

2. プライベートキーとCSR(証明書署名要求)の作成

SSL証明書を作成するためには、まずプライベートキーとCSRを生成する必要があります。CSRは、証明書を発行する際に必要な情報を含むファイルです。プライベートキーは、後でサーバーにインストールされ、SSL通信を行う際に使用されます。

プライベートキーの作成

次のコマンドを実行して、プライベートキーを作成します。プライベートキーは、サーバーの/etc/ssl/privateディレクトリに保存します。

bash
sudo openssl genpkey -algorithm RSA -out /etc/ssl/private/example.com.key -aes256

このコマンドにより、example.com.keyという名前のプライベートキーが生成されます。キーのパスフレーズを入力するよう求められるので、忘れないようにメモしておきます。

CSRの作成

次に、CSR(証明書署名要求)を作成します。このファイルには、SSL証明書を発行する際に必要な情報(会社名、ドメイン名、所在地など)が含まれます。

bash
sudo openssl req -new -key /etc/ssl/private/example.com.key -out /etc/ssl/certs/example.com.csr

このコマンドを実行すると、いくつかの質問が表示されます。ここで入力する内容を説明します。

  • Country Name (2 letter code): 日本の場合はJPを入力します。
  • State or Province Name (full name): 都道府県名を入力します(例:Tokyo)。
  • Locality Name (eg, city): 市区町村名を入力します(例:Shibuya)。
  • Organization Name (eg, company): 組織名を入力します(例:Example Co.)。
  • Organizational Unit Name (eg, section): 部門名を入力します(任意)。
  • Common Name (eg, fully qualified domain name): SSL証明書を発行するドメイン名を入力します(例:example.com)。
  • Email Address: メールアドレスを入力します(任意)。

入力が完了すると、example.com.csrというファイルが/etc/ssl/certs/ディレクトリに作成されます。

3. SSL証明書の取得

CSRを作成した後、SSL証明書を取得するには、商用の証明書機関(CA)にCSRを送信して証明書を発行してもらうか、無料の証明書を提供するLet’s Encryptなどを使用します。ここでは、無料でSSL証明書を提供するLet’s Encryptを使った方法を説明します。

Certbotのインストール

Let’s Encryptの証明書を取得するためには、Certbotというツールをインストールします。次のコマンドを実行してインストールします。

bash
sudo apt-get install python-certbot-nginx

SSL証明書の取得とインストール

Certbotを使ってSSL証明書を取得し、Nginxに自動的に設定を適用するには、次のコマンドを実行します。

bash
sudo certbot --nginx -d example.com -d www.example.com

ここで、example.comを自分のドメインに置き換えてください。このコマンドを実行すると、CertbotはLet’s Encryptから無料のSSL証明書を取得し、Nginxの設定ファイルを自動で更新してHTTPSを有効にします。

証明書が正常にインストールされると、証明書の有効期限(通常は90日)や、リダイレクト設定を行うように求められます。リダイレクトの設定は、HTTPをHTTPSに強制的にリダイレクトする設定で、セキュリティを高めます。

4. Nginxの設定確認

Certbotが自動的にNginxの設定を更新しますが、設定が正しく行われたかを確認するために、Nginxの設定ファイルを手動で確認することができます。

設定ファイルは通常、/etc/nginx/sites-available/defaultにあります。このファイルを開き、以下のような設定が追加されていることを確認します。

nginx
server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # その他の設定 }

また、HTTP(ポート80)のリダイレクト設定も必要です。以下のように、HTTPリクエストをHTTPSにリダイレクトする設定を追加します。

nginx
server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; }

5. Nginxの再起動

設定が完了したら、Nginxを再起動して変更を反映させます。

bash
sudo systemctl restart nginx

6. SSL証明書の自動更新

Let’s Encryptの証明書は90日間有効であり、期限が切れる前に自動更新する必要があります。Certbotには自動更新機能が備わっており、cronジョブを使用して自動的に証明書を更新します。

次のコマンドで自動更新が正常に機能するかを確認できます。

bash
sudo certbot renew --dry-run

問題がなければ、Certbotは自動で証明書を更新します。

結論

Ubuntu 14.04上でNginxサーバーにSSL証明書をインストールし、HTTPS通信を有効にする手順を説明しました。これで、ウェブサイトのセキュリティが大幅に向上し、ユーザーとの通信が暗号化されます。また、Let’s Encryptを利用することで、無料でSSL証明書を取得できるため、コストをかけずにセキュアな通信環境を実現できます。

Back to top button