ウェブサイト検索

CentOS 8 で Let's Encrypt を使用して Nginx を保護する方法


電子フロンティア財団 (EFF) によって 2016 年 4 月に設立された Let’s Encrypt は、Web サイトに完全に無料で TLS 暗号化を提供する無料の自動デジタル証明書です。

Let’s Encrypt 証明書の目的は、セキュリティ証明書の検証、作成、署名、自動更新を自動化することです。この証明書を使用すると、HTTPS プロトコルを使用した Web サーバーへの暗号化された接続が、複雑さを伴わないシンプルで手間のかからない方法で可能になります。証明書の有効期間は 90 日間のみで、その後自動更新が有効になります。

推奨読書: CentOS 8 で Let's Encrypt SSL 証明書を使用して Apache を保護する方法

この記事では、Let's Encrypt をインストールして、CentOS 8 上の Nginx Web サーバーを保護するための無料の SSL 証明書を取得する方法を説明します (同じ手順はRHEL 8 でも機能します)。 SSL証明書を自動更新する方法も合わせて説明します。

前提条件

先に進む前に、次の点を確認してください。

1. ウェブサーバーの専用 IP アドレスを指す完全修飾ドメイン名 (FQDN)。これは、DNS Web ホスティング プロバイダーのクライアント領域で構成する必要があります。このチュートリアルでは、IP アドレス 34.70.245.117 を指すドメイン名 linuxtechwhiz を使用します。

2. これは、次のように dig コマンドを使用して前方参照を実行することでも確認できます。

dig linuxtechwhiz.info

3. Nginx が Web サーバーにインストールされ、実行されています。これを確認するには、ターミナルにログインして以下のコマンドを実行します。 Nginx がインストールされていない場合は、記事に従って CentOS 8 に Nginx をインストールしてください。

sudo systemctl status nginx

4. Web ブラウザで Web サーバーの URL にアクセスして確認することもできます。

http://server-IP-or-hostname

URL から、サイトが安全ではないため、暗号化されていないことが明確にわかります。これは、Web サーバーに対して行われるリクエストが傍受される可能性があることを意味します。これには、ユーザー名、パスワード、社会保障番号、クレジット カード情報などの重要な機密情報が含まれます。

それでは、実際に Let's Encrypt をインストールしてみましょう。

ステップ 1. CentOS 8 に Certbot をインストールする

Let’s Encrypt 証明書をインストールするには、まずcertbot をインストールする必要があります。これは、Let’s Encrypt Authority からセキュリティ証明書を取得し、ウェブサーバーで使用する証明書の検証と構成を自動化できる拡張可能なクライアントです。

curl コマンドを使用してcertbot をダウンロードします。

sudo curl -O https://dl.eff.org/certbot-auto

次に、証明書を /usr/local/bin ディレクトリに移動します。

sudo mv certbot-auto /usr/local/bin/certbot-auto

次に、図に示すように、certbot ファイルにファイル権限を割り当てます。

chmod 0755 /usr/local/bin/certbot-auto

ステップ 2. Nginx サーバーブロックを構成する

Nginx のサーバー ブロックは、Apache の仮想ホストに相当します。サーバー ブロックを設定すると、1 つのサーバーに複数の Web サイトを設定できるだけでなく、certbot がドメインの所有権を認証局 – CA に証明できるようになります。

サーバー ブロックを作成するには、次のコマンドを実行します。

sudo vim /etc/nginx/conf.d/www.linuxtechwhiz.info

必ずドメイン名を独自のドメイン名に置き換えてください。次に、以下の設定を貼り付けます。

server {
   server_name www.linuxtechwhiz.info;
   root /opt/nginx/www.linuxtechwhiz.info;

   location / {
       index index.html index.htm index.php;
   }

   access_log /var/log/nginx/www.linuxtechwhiz.info.access.log;
   error_log /var/log/nginx/www.linuxtechwhiz.info.error.log;

   location ~ \.php$ {
      include /etc/nginx/fastcgi_params;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }
}

ファイルを保存し、テキスト エディタを終了します。

ステップ 3: Lets Encrypt 証明書を CentOS 8 にインストールする

次に、certbot コマンドを使用して、Let’s Encrypt セキュリティ証明書の取得と構成を初期化します。

sudo /usr/local/bin/certbot-auto --nginx

このコマンドは、示されているように複数の Python パッケージとその依存関係を実行してインストールします。

その後、次のような対話型プロンプトが表示されます。

すべてがうまくいけば、最後にお祝いのメッセージが表示されるはずです。

Nginx サイトが暗号化されていることを確認するには、Web ページをリロードし、URL の先頭にある南京錠の記号を確認します。これは、 サイトがSSL/TLS 暗号化を使用して保護されていることを示します。

セキュリティ証明書の詳細を取得するには、南京錠のマークをクリックし、[証明書] オプションを選択します。

以下に示すように、セキュリティ証明書に関する詳細情報が表示されます。

さらに、セキュリティ証明書の強度をテストするには、https://www.ssllabs.com/ssltest/ にアクセスして、セキュリティ証明書のステータスのより正確かつ詳細な分析を見つけてください。

ステップ 4. Let’s Encrypt 証明書の更新

前に見たように、セキュリティ証明書は 90 日間のみ有効であり、有効期限が切れる前に更新する必要があります。

次のコマンドを実行して、証明書の更新プロセスをシミュレートまたはテストできます。

sudo /usr/local/bin/certbot-auto renew --dry-run

結論

これで、CentOS 8 上の Let's Encrypt を使用して Nginx を保護するためのこのチュートリアルは終了です。 Let’s Encrypt は、Nginx ウェブサーバーを手動で行うには複雑な作業となる効果的で手間のかからない方法を提供します。

これで、サイトが完全に暗号化されるはずです。証明書の有効期限の数週間前に、EFF は証明書の期限切れによる中断を避けるために、証明書を更新するよう電子メールで警告します。今日はここまでです!