CentOS 7でLet’s Encryptを使用してNginxを安全に設定する方法

はじめに

Let’s Encryptは、Webサーバー上で暗号化されたHTTPSを可能にするため、無料のTLS/SSL証明書を取得してインストールする手段を提供する新しい証明機関(CA)です。それは、必要な手順のほとんど(もしくはすべて)を自動化しようとするソフトウェアクライアントであるCertbotを提供することにより、プロセスを簡略化します。現在、証明書の取得とインストールのプロセスは、ApacheとNginxの両方のWebサーバーで完全に自動化されています。

このチュートリアルでは、certbot Let’s Encrypt クライアントを使用して無料のSSL証明書を取得し、CentOS 7上のNginxと一緒に使用する方法を説明します。また、SSL証明書を自動的に更新する方法も紹介します。

前提条件

このチュートリアルを始める前に、いくつかのものが必要になります。

  • A CentOS 7 server with a non-root user who has sudo privileges. You can learn how to set up such a user account by following steps 1-3 in our initial server setup for CentOS 7 tutorial.
  • You must own or control the registered domain name that you wish to use the certificate with. If you do not already have a registered domain name, you may register one with one of the many domain name registrars out there (e.g. Namecheap, GoDaddy, etc.).
  • A DNS A Record that points your domain to the public IP address of your server. This is required because of how Let’s Encrypt validates that you own the domain it is issuing a certificate for. For example, if you want to obtain a certificate for example.com, that domain must resolve to your server for the validation process to work. Our setup will use example.com and www.example.com as the domain names, so both DNS records are required.

一旦前提条件を全てクリアしたら、Let’s Encryptクライアントソフトウェアのインストールに進みましょう。

ステップ1—Certbot Let’s Encryptクライアントのインストール

SSL証明書を取得するためにLet’s Encryptを使用するための最初の手順は、サーバーにcertbotソフトウェアをインストールすることです。現在、これをインストールする最良の方法は、EPELリポジトリを通じて行うことです。

サーバー上でEPELリポジトリにアクセスを許可するには、次のように入力します:

  1. sudo yum install epel-release

 

リポジトリが有効になれば、certbot-nginxパッケージを入手することができます。

  1. sudo yum install certbot-nginx

 

certbot(Let’s Encrypt クライアント)がインストールされ、使用する準備ができました。

ステップ2:Nginxの設定を行います。

まだNginxをインストールしていない場合は、今すぐインストールすることができます。前のセクションでEPELリポジトリが既に有効になっているはずなので、以下のコマンドを入力してNginxをインストールできます。

  1. sudo yum install nginx

 

その後、systemctlを使用してNginxを開始します。

  1. sudo systemctl start nginx

 

CertbotはNginxのために自動的にSSLを設定することができますが、正しいサーバーブロックを構成ファイルから見つける必要があります。これは、証明書をリクエストしているドメインにマッチするserver_nameディレクティブを探すことで行われます。新規のNginxインストールを行っている場合は、viやお気に入りのテキストエディタを使用してデフォルトの構成ファイルを更新することができます。

  1. sudo vi /etc/nginx/nginx.conf

 

既存のserver_name行を見つけてください。 (Kyizon no server_name gyo wo mitsukete kudasai.)

/etc/nginx/nginx.confを日本語で言い換えると、「/etc/nginx/nginx.conf」です。
server_name _;

「_アンダースコアをあなたのドメイン名で置き換えてください。」

以下はネイティブな日本語の一つのオプションです:

「/etc/nginx/nginx.conf」

server_name example.com www.example.com;

ファイルを保存してエディターを終了してください。viを使用している場合は、:xと入力し、プロンプトが表示されたらyと入力して保存し、終了してください。設定の編集時に構文を確認してください。

  1. sudo nginx -t

 

もしエラーなしで実行が完了したら、新しい設定を読み込むためにNginxを再起動してください。

  1. sudo systemctl reload nginx

 

Certbotは正しいサーバーブロックを見つけて更新できるようになります。次に、ファイアウォールを更新してHTTPSトラフィックを許可します。

ステップ3 — ファイアウォールの更新

ファイアウォールが有効になっている場合は、ポート80と443を受信トラフィックに開放してください。ファイアウォールを使用していない場合は、次に進んでください。

もしfirewalldファイアウォールが実行されている場合、次のようにしてこれらのポートを開放できます。

  1. sudo firewall-cmd –add-service=http
  2. sudo firewall-cmd –add-service=https
  3. sudo firewall-cmd –runtime-to-permanent

 

もしiptablesファイアウォールが実行中であれば、実行するコマンドは現在のルールセットに大きく依存します。初期のルールセットでは、次のようにしてHTTPとHTTPSのアクセスを追加することができます。

  1. sudo iptables -I INPUT -p tcp -m tcp –dport 80 -j ACCEPT
  2. sudo iptables -I INPUT -p tcp -m tcp –dport 443 -j ACCEPT

 

私たちは今、Certbotを実行して証明書を取得する準備が整いました。

ステップ4:証明書の取得

Certbotは、さまざまなプラグインを通じてSSL証明書を取得するためのさまざまな方法を提供しています。Nginxプラグインは、必要な場合にNginxの再設定と設定の再読み込みを自動で行います。

  1. sudo certbot –nginx -d example.com -d www.example.com

 

これは、–nginxプラグインを使用してcertbotを実行し、-dを使って証明書を有効にしたい名前を指定します。

もし初めてcertbotを実行する場合、メールアドレスを入力し、利用規約に同意するように促されます。それを行った後、certbotはLet’s Encryptサーバーと通信し、ドメインの所有権を確認するためのチャレンジを実行します。構成が更新され、Nginxは新しい設定を反映するために再読み込みされます。certbotは、プロセスが成功したことと証明書が保存されている場所を知らせるメッセージで終了します。

Output

IMPORTANT NOTES: – Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/your_domain/privkey.pem Your certificate will expire on 2022-10-20. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the “certonly” option. To non-interactively renew *all* of your certificates, run “certbot renew” – If you like Certbot, please consider supporting our work by: Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

証明書はダウンロードされ、インストールされ、ロードされました。https://を使用してウェブサイトを再読み込みして、ブラウザのセキュリティ指示子に注意してください。通常、緑色のロックアイコンで正しく保護されたサイトを表しているはずです。

ステップ5 — 自動更新の設定を行う。

Let’s Encrypt(レッツ・エンクリプト)の証明書は90日間だけ有効です。これはユーザーが証明書の更新プロセスを自動化するための促進策です。期限が切れる証明書を自動的に確認し、更新するために定期的に実行されるコマンドを設定する必要があります。

日々の更新チェックのために、定期的なジョブを実行するための標準的なシステムサービスであるcronを使用します。cronには、私たちはcrontabと呼ばれるファイルを開いて編集することで、何を実行するかを指示します。

  1. sudo crontab -e

 

テキストエディタがデフォルトの空のテキストファイルであるcronタブを開きます。次の行を貼り付けてから、保存して閉じてください。

クロンタブ
. . .
15 3 * * * /usr/bin/certbot renew --quiet

この行の「15 3 * * *」の部分は、「毎日午前3時15分に次のコマンドを実行する」という意味です。時間は任意で選んで構いません。

Certbotの再発行コマンドは、システムにインストールされているすべての証明書を確認し、30日以内に期限が切れるものを更新します。–quietは、Certbotに情報を出力せず、ユーザーからの入力を待たないように指示します。

cronは、このコマンドを毎日実行します。インストールされている証明書は、期限切れまで30日未満の場合に自動的に更新および再読み込みされます。

Note

VPSのガイド「Cronを使用してタスクを自動化する方法」で、クーロンジョブの作成とスケジュールの方法について詳しく説明していますので、詳細はそちらをご覧ください。

結論

このチュートリアルでは、Let’s Encryptのクライアントであるcertbotをインストールし、ドメインのためのSSL証明書をダウンロードし、Nginxをこれらの証明書を使用するように設定し、自動証明書更新をセットアップしました。Certbotの使用に関するさらなる質問がある場合は、彼らのドキュメントを参照することをおすすめします。

コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds